本文首发地址:开源实践网:Ubuntu 18.04 安装mysql 8.0 远程登录
一 简介
使用Ubuntu18.04安装完mysql 5.27以后,在部署项目的时候,偶遇一个比较恶心的bug,就是服务器部署项目无法连上数据库,并且一直无法解决,偶然间在网上看到mysql 5.27对Ubuntu18.04支持有问题,于是重置系统,然后重新安装mysql 8.0
官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能!
- 账户与安全
- 优化器索引
- 通用表表达式
- 窗口函数
- InnoDB 增强
- JSON 增强
二 安装
- 下载deb包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb
- 运行命令
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
sudo apt update
- 安装mysql8
sudo apt install mysql-server
-
输入root密码
-
密码加密方式选择建议(也是我画圈的那个)
注:使用这种方式远程登录的软件需要最新,不然则选择另一个
查看mysql是否安装成功
mysql -u root -p
三 配置远程登录
- 登录mysql机器
mysql -u root -p
- 切换到Mysql数据库
mysql> use mysql
- 在 mysql 数据库的 user 表中查看当前 root 用户的相关信息
select host, user, authentication_string, plugin from user;
执行完上面的命令后会显示一个表格
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
- 授权 root 用户的所有权限并设置远程访问
GRANT ALL ON *.* TO 'root'@'%';
- 创建一个用户,用来登录
create user '用户名'@'%' identified by '密码';
注: 密码必须要大写字符,特殊字符,数字 (为了安全)
- 刷新权限
flush privileges;
- 访问数据库
远程访问数据库的可视化工具比较多如:Navicat、SQLyog、MySQL workbench 等,我这里使用 Navicat
输入访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
此问题有两种方法,一种是更新 Navicat 驱动来解决此问题,另一种是将 MySQL 用户登录的加密规则修改为 mysql_native_password,第一种方法我试过了没有起作用,我这里采用第二种方法。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;