在 WSL 安装并配置 MySQL 与在 Ubuntu Server 安装配置 MySQL 一样的步骤。简要记录一下配置的过程。
安装 MySQL
参考微软官方文档[1]安装MySQL。
sudo apt install -y mysql-server
启动 MySQL Server:
sudo service mysql start
登录 mysql:
sudo mysql
mysql_secure_installation
会企图设置 MySQL root 用户的密码,但是 root 账户默认是不要密码登录的。因此在运行 mysql_secure_installation
移除匿名用户前要先设置 root 账户的登录认证方式为使用密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
exit
然后可以使用脚本删除匿名用户和匿名用户访问的数据库[2]:
sudo mysql_secure_installation
移除匿名用户后恢复 root 用户默认的认证方式。登录 MySQL。
mysql -u root -p
修改 root 用户的认证方式为默认的,auth_socket
。
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
创建普通用户⛺
以 root 用户登录 mysql 是需要 sudo 的,而普通用户不需要 sudo。直接在终端通过mysql -u <username>
就可以登录mysql了。
创建普通用户[3]:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
授权:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'username'@'localhost' WITH GRANT OPTION;
查看用户的验证方式:
SELECT user,host,plugin from mysql.user;
免密码登录
创建 ~/.my.cnf
加入如下形式的配置,即可不用输入密码。为了安全可以设置权限为 600
[4]。
[client]
user=username
password=password
username
替换为创建的用户名,password
替换为创建用户的密码。
https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-database ↩︎
https://www.nixcraft.com/t/mysql-failed-error-set-password-has-no-significance-for-user-root-localhost-as-the-authentication-method-used-doesnt-store-authentication-data-in-the-mysql-server-please-consider-using-alter-user/4233 ↩︎
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-22-04#step-3-creating-a-dedicated-mysql-user-and-granting-privileges ↩︎
https://unix.stackexchange.com/questions/205180/how-to-pass-password-to-mysql-command-line ↩︎