在 MySQL 8.x 带来了许多新特性和改进包括 JSON 数据类型和 Java Script 作为 JavaScript Shell 支持,可以直接使用 JavaScript(JS)作为数据库查询语言或存储过程的语言,更好的性能和安全性,例如连接过程中出现的 Public Key Retrieval is not allowed
错误提示,这些都是新版本特性。本文将记录完整的基于 Ubuntu 最新版本中安装 MySQL8.x 版本的过程。
安装和配置
在安装 MySQL8.x 之前可以尝试先更新一下操作系统和软件包,执行下面命令可以更新:
sudo apt update && apt upgrade -y
更新系统和软件包版本需要一点时间,这个过程取决于你网络和所使用的 apt 软件包数据源地址,数据源配置文件路径 /etc/apt/sources.list
。
apt search mysql
包管理工具搜索最新的 MySQL8.x 软件安装包,最后通过 apt install
执行进行安装。
sudo apt remove mysql*
sudo apt autoremove
sudo apt autoclean
清空完成之后提供 apt 所提供的 MySQL 软件包进行安装:
sudo apt search mysql
sudo apt install mysql-*
安装完成之后,可以使用 sudo mysql_secure_installation
来初始化 root 用户的密码,这是 MySQL 新版本所提供的初始化数据库程序:
sudo mysql_secure_installation
/etc/mysql/mysql.conf.d/mysqld.cnf
中找到 bind-address
的值修改它为 0.0.0.0
即可。
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0 #这一行 ✅
mysqlx-bind-address = 127.0.0.1
通过上面的配置目前 root 还是只能通过本机的客户端进行连接,有远程登录需求的可以配置一个远程用户并且允许远程登录,并且设置初始化密码,我这里开放的是 root
用户,执行下面命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码' WITH GRANT OPTION;
解决安全连接问题
在 MySQL8.x 版本中如果要使用正常的密码连接到 Server 中连接过程中出现的 Public Key Retrieval is not allowed
错误提示,这个是新特别特意到安全功能增强,如果要使用这种方式连接必须要配置 SSL/TLS 密钥对进行连接。
mysql_native_password
,这让 MySQL 使用的默认身份验证插件,它支持基于用户名和密码的常规身份验证机制,执行下面命令使用默认密码验证方式进行连接:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new password';
执行上面的 SQL 之后,刷新一下 MySQL 授权表:
flush privileges;
最后记得在服务器上允许开放 3306
端口数据包的连接。