之前在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;
# 选中 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;# 退出并重启 mysqlmysql> 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 -pEnter password: # 这里输入你刚才设置的密码# 更新 root 用户的 host 字段 更新为 %mysql> UPDATE mysql.user SET host="%" WHERE user="root";# 保存更新结果mysql> FLUSH PRIVILEGES;# 退出并重启 mysqlmysql> exit;sudo service mysql restart
3.2 修改 Mysql 的配置文件,确保 mysql 服务监听地址不是本机地址
# 修改 MYSQL 服务的配置sudo vim /etc/mysql/mysql.conf.d/f
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 用户是否可以正常远程登录,如下:
此时也可以通过在另一台机器上使用 navicate 和 MySQL Workbench 之类的图形工具远程访问。
4. 常用的额外操作:
# 查看有那些数据库SHOW DATABASES;# 选中使用数据库use databaseName# 查看数据库中有哪些表SHOW TABLES;# 查看表结构SHOW COLUMNS FROM tableName;
如果觉得《Ubuntu 18.04 安装 MySQL 5.7【解决普通用户登录 密码修改 远程访问等问题】》对你有帮助,请点赞、收藏,并留下你的观点哦!