Debian12使用镜像软件源安装最新MySQL8

1. 安装

1
2
3
4
5
6
7
8
echo deb https://mirrors.tuna.tsinghua.edu.cn/mysql/apt/debian bookworm mysql-8.0 mysql-tools > /etc/apt/sources.list.d/mysql-community.list  # 添加清华镜像源
apt install -y gnupg # 安装gpg
apt-key adv --keyserver pgp.mit.edu --recv-keys A8D3785C # 导入gpg密钥
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C # 上一条命令导入失败则选择此命令
apt-key export A8D3785C | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/mysql.gpg # 导出密钥,避免更新警告
sudo apt remove --purge mariadb-client-core mariadb-server-core libmariadb3 mariadb-common # 卸载MariaDB
apt auto-remove # 自动卸载无用依赖
apt update && apt install mysql-community-server # 安装MySQL

安装过程中会要求设置root密码:

alt text

再次确认密码:

alt text

选择身份验证插件,为连接方便推荐使用第二个:

alt text

MySQL 8.0+ 版本以后,root 用户默认使用 auth_socket 插件进行身份验证,此插件的特点如下:
1.只允许本地(127.0.0.1)登录,不允许本机以外的任何机器登录 root 用户;
2.要登录 MySQL 的 root 用户,必须用操作系统的 root 用户登录。即拒绝本机中不能用 sudo 提权至 root 的用户登录。
3.不需要输入密码,即使手动为 root 用户 设置了密码,登录时也不会验证密码。
若选择第二个选项,mysql则会在/etc/mysql/mysql.conf.d/default-auth-override.cnf文件中写入default-authentication-plugin = mysql_native_password配置。若将其注释掉,则后续新建的用户会恢复默认使用 auth_socket 插件验证登录。使用SELECT user,host,plugin FROM mysql.user;语句可以查询所有用户的身份验证插件。修改身份验证插件的语句为:ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '新密码';

2. 配置

使用以下命令修改配置文件/etc/mysql/mysql.conf.d/mysqld.cnf

1
2
3
4
5
6
cat >> /etc/mysql/mysql.conf.d/mysqld.cnf << EOF
bind-address = 0.0.0.0
port = 3306
skip-ssl
EOF
systemctl restart mysql

mysql默认监听在0.0.0.0:3306上,加上前两个配置的作用是强调意图,方便后续修改;
skip-ssl的作用是禁用ssl,不禁用的话会导致mysql客户端无法验证证书真实性(mysql服务端默认使用自签证书),使连接失败。除非客户端每次连接时加上--ssl-mode=DISABLED参数。查询是否启用ssl:SHOW VARIABLES LIKE 'ssl';,若have_sslDISABLED,则为禁用状态。

连接MySQL:

1
2
mysql -u root -p
select version();

alt text

允许从任何主机连接到root用户:

1
2
UPDATE mysql.user SET host='%' WHERE user='root';  -- 修改root用户的主机访问权限为允许从任何主机连接
select user,host from mysql.user; # 查看所有用户的主机访问权限