90 lines
3.2 KiB
Markdown
90 lines
3.2 KiB
Markdown
|
---
|
|||
|
title: Ubuntu 安装MySQL(MariaDB)过程
|
|||
|
date: 2020-07-22 22:54:29
|
|||
|
tags:
|
|||
|
- Linux
|
|||
|
- Ubuntu
|
|||
|
- MySQL
|
|||
|
- MariaDB
|
|||
|
- 数据库
|
|||
|
categories:
|
|||
|
- MariaDB
|
|||
|
---
|
|||
|
|
|||
|
> 本文内容简单,只是整理了一下常规操作而已。
|
|||
|
|
|||
|
> MariaDB 是 MySQL 的一个分支主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
|
|||
|
>
|
|||
|
> MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。
|
|||
|
|
|||
|
> 一般情况下我在个人的学习和开发中都会使用 MariaDB 来代替 MySQL,就像我会使用 Open JDK 来代替 Oracle JDK 一样。
|
|||
|
|
|||
|
## 1. 安装
|
|||
|
|
|||
|
在 Ubuntu 上安装 MySQL:
|
|||
|
```
|
|||
|
sudo apt-get install mysql-client mysql-server
|
|||
|
```
|
|||
|
|
|||
|
安装 MariaDB 的话,把 "mysql" 改成 "mariadb" 即可:
|
|||
|
```
|
|||
|
sudo apt-get install mariadb-client mariadb-server
|
|||
|
```
|
|||
|
|
|||
|
一般来说安装完成之后都是自动运行的,如果没有运行,可以执行 `sudo service mysql start` 启动它(MySQL 和 MariaDB 都一样)。
|
|||
|
|
|||
|
> 关闭服务:`sudo service mysql stop`
|
|||
|
> 查看服务状态:`sudo service mysql status`
|
|||
|
|
|||
|
> 我在阿里云的 Ubuntu 20.04 上安装 MySQL,版本输出信息为:
|
|||
|
> Server version: 8.0.20-0ubuntu0.20.04.1 (Ubuntu)
|
|||
|
>
|
|||
|
> 在本地机的 Ubuntu 18.04.4 MariaDB,版本输出信息为:
|
|||
|
> Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 18.04
|
|||
|
|
|||
|
## 2. 初始化
|
|||
|
|
|||
|
```
|
|||
|
mysqld -initialize
|
|||
|
```
|
|||
|
耐心等待命令执行完成。
|
|||
|
|
|||
|
## 3. 设置
|
|||
|
|
|||
|
### 3.1 登录数据库
|
|||
|
切换系统 root 用户,输入
|
|||
|
```
|
|||
|
mysql -u root -p
|
|||
|
```
|
|||
|
不用输入密码,直接回车,登录 MariaDB(或者 MySQL)。
|
|||
|
|
|||
|
### 3.2 修改密码
|
|||
|
```
|
|||
|
set password for root@localhost = password('123');
|
|||
|
```
|
|||
|
> 否则默认密码为空。
|
|||
|
|
|||
|
### 3.3 修改 `plugin` 属性为 `mysql_native_password`
|
|||
|
```sql
|
|||
|
use mysql;
|
|||
|
update user set plugin='mysql_native_password' where user='root';
|
|||
|
```
|
|||
|
然后输入 `flush privileges;` 使之生效。
|
|||
|
|
|||
|
> 否则系统的其他用户无法登录数据库的 root 用户。
|
|||
|
> ERROR 1698 (28000): Access denied for user 'root'@'localhost'
|
|||
|
|
|||
|
### 3.4 将 `host` 属性设置为 `%`
|
|||
|
```sql
|
|||
|
use mysql;
|
|||
|
update user set host = '%' where user = 'root';
|
|||
|
```
|
|||
|
然后输入 `flush privileges;` 使之生效。
|
|||
|
> 否则其它设备上的客户端(DataGrid、Netcat 以及我们自己编写的程序等)无法登录数据库的 root 用户。
|
|||
|
|
|||
|
## 4. 注意!!!
|
|||
|
上面的 3.3、3.4 针对的是我学习生活中需要在其他设备、其他系统用户上登录数据库的 root 用户。实际上,为了安全,我们可能不会允许这么做。
|
|||
|
|
|||
|
例如我们可能保留 root 用户的 plugin 属性为 unix_socket,系统的普通用户也只能登录数据库的其他用户,只有系统的 root 用户才能登录数据库的 root 用户。
|
|||
|
|
|||
|
我们还可能保留 root 用户的 host 属性为 localhost,或者只允许在指定的主机上登录 root,还可以添加另一个数据库用户(设置好适合的权限),用来在其他设备上登录并操作数据库。
|