Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录、密码修改、远程访问等问题】

之前在Ubuntu 16.04安装 MySQL的时候很顺利,这次在 Ubuntu 18.04 中安装 MySQL 5.7.23 中,遇到一些坑,折腾了好久,这里做一个记录。

1. 安装数据库

# 安装 mysql-server mysql-workbench【图形化工具】
sudo apt-get install mysql-server mysql-workbench

默认情况下,在安装 mysql-server 的时候就会安装,mysql-client 等相关客户端。

2. 解决本地账户不能直接登陆问题【含重设密码】

初始情况下 root 账户没有密码,这时普通用户并不能直接使用 mysql 命令直接控制台登录,更不能使用 mysql-workbench 直接连接登录。主要是由于 mysql.user 这张表中 root 用户的 plugin 字段值为 auth_socket,改为 mysql_native_password 即可。同时为了方便之后使用,我们在接下来的操作中顺带给 root 账户设置密码。

# 使用 root 权限执行 mysql 命令登录 mysql 控制台
sudo mysql
# 查看已存在的数据库
SHOW DATABASES;

Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录、密码修改、远程访问等问题】_第1张图片

# 选中 mysql 数据库
mysql> use mysql;
# 查看 mysql 数据库中 user 表的关键属性字段
mysql> SELECT user, host, plugin, authentication_string FROM user;c
 
# 输出如下结果
+------------------+-----------+-----------------------+-------------------------------------------+
| user             | host      | plugin                | authentication_string                     |
+------------------+-----------+-----------------------+-------------------------------------------+
| root             | localhost | auth_socket           |                                           |
| mysql.session    | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | mysql_native_password | *060C7F7EFE89866C2630E9C0F36C32C1D7734490 |
+------------------+-----------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)

# 更新 plugin 及 authentication_string 字段
mysql> UPDATE user SET plugin="mysql_native_password", authentication_string=PASSWORD("123456") WHERE user="root";
# 输出以下结果
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

# 保存更新结果
mysql> FLUSH PRIVILEGES;
# 退出并重启 mysql
mysql> exit;
sudo service mysql restart

此时便可以在普通 Linux 账户下,并使用 mysql 的 root 账户及新设密码“123456”,来登录 mysql 服务。也可以使用 workbench 等工具来本地连接 mysql 。

3. 解决 root 账户远程登陆问题

要想实现远程登录需要做以下操作:

3.1 保证 root 账户的 host 属性字段不能是 localhost,而是可以远程访问的属性值

# 登录 mysql 服务器
mint@vm:~/桌面$ mysql -u root -p
Enter password: # 这里输入你刚才设置的密码

# 更新 root 用户的 host 字段 更新为 %
mysql> UPDATE mysql.user SET host="%" WHERE user="root";

# 保存更新结果
mysql> FLUSH PRIVILEGES;
# 退出并重启 mysql
mysql> exit;
sudo service mysql restart

3.2 修改 Mysql 的配置文件,确保 mysql 服务监听地址不是本机地址

# 修改 MYSQL 服务的配置
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

3.3 确保防火墙允许 3306 端口开启

# 开启防火墙 【PS:某些情况下 Ubuntu 可能默认的防火墙没有开启,这样的话就不用关心防火墙造成的影响,但是云服务器在生产环境下,我们为了安全通常是开启防火墙的,这时候我们需要知晓该如何配置】
sudo ufw enable/disable # 开启或者关闭防火墙 更多操作大家可以使用 ufw --help 查看

# 添加允许规则
sudo ufw allow 3306/tcp

# 查看已添加规则
sudo ufw status

# debian 系列的防火墙软件为 ufw, Ubuntu 是基于 debian 的,Centos 属于红帽系列,防火墙软件不是 ufw,具体可以自行百度。

3.4 确保可以正常联网【PS:好像是废话】

之后便可以通过使用另一台机器检测 root 用户是否可以正常远程登录,如下:

Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录、密码修改、远程访问等问题】_第2张图片

此时也可以通过在另一台机器上使用  navicate 和 MySQL Workbench 之类的图形工具远程访问。

4. 常用的额外操作:

# 查看有那些数据库
SHOW DATABASES;
# 选中使用数据库
use databaseName
# 查看数据库中有哪些表
SHOW TABLES;
# 查看表结构
SHOW COLUMNS FROM tableName;

你可能感兴趣的:(Linux,数据库)