ubuntu20上使用mysql8,关联database,auth_socket,mysql_native_password,mariadb,arch,manjaro
安装
1 2 | sudo apt update sudo apt install mysql-server |
安装完成后,系统自动启动mysql
1 2 | $ sudo systemctl is-enabled mysql
enabled
|
运行 sudo mysql
直接以 root@localhost
身份登录mysql,不需要输入密码。
应为 root 默认使用的认证插件是 auth_socket
/ Unix auth_socket plugin ,也就是使用系统用户认证模式。
初始化安全设置
sudo mysql_secure_installation
- 是否设置VALIDATE PASSWORD component
- 选择密码的强度要求: 选 2=STRONG (numeric, mixed case, special characters and dictionary)
- 下面就让输入root的密码了。
- 后面就是删除匿名帐号、测试库之类的,按照提示就好。
实际上面即使设置了root密码,也没法使用root帐号密码登录mysql。参见: 解决无法使用帐号密码登录root
技巧
arch linux 连接 mysql server
在arch 上 mariadb 替代 oracle mysql
1 2 3 4 5 6 | sudo pacman -S mariadb-clients $ mysql --version mysql Ver 15.1 Distrib 10.7.3-MariaDB, for Linux (x86_64) using readline 5.1 # 能连上 mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu)) |
开启 3306 非本机登录
修改 /etc/mysql/mysql.conf.d/mysqld.cnf
1 2 | [mysqld] bind-address = 127.0.0.1 |
改为
1 2 | [mysqld] bind-address = 0.0.0.0 |
最后,重启mysql, sudo systemctl restart mysql.service
解决无法使用帐号密码登录root
root 默认使用的认证插件是 auth_socket
, 运行 sudo mysql
直接以 root@localhost
身份登录mysql,不需要输入密码。
但是,root帐号无法通过设置在mysql的密码登录:
1 2 3 | $ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost' |
- 解决方法
- 查看当前认证方式为:
auth_socket
1 2 3 4 5 6 7 8
mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | auth_socket | +------------------+-----------+-----------------------+
-
sudo mysql
登录进去修改登录方式和密码:1 2 3 4 5 6
mysql> USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password'; mysql> FLUSH PRIVILEGES; mysql> exit;
-
重启 mysql
1
sudo systemctl restart mysql.service
-
查看当前认证方式为:
mysql_native_password
1 2 3 4 5 6 7 8
mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | mysql_native_password | +------------------+-----------+-----------------------+
- 就可以使用密码登录root了
修改密码等级,使能设置简单6位数密码
# 显示当前mysql 密码策略
mysql> SHOW VARIABLES LIKE 'validate_password%';
# 设置密码的强度验证等级为LOW
mysql> set global validate_password.policy=LOW;
# 设置密码长度为6
mysql> set global validate_password.length=6;