我最近不得不安装一个新的WSL2实例,使用的是Ubuntu 22.04版本,以下是我成功的方法。这个方法适用于从零开始安装WSL 2到使
mysql -u root
正常工作。据我所知,这是获取最新的WSL和mysql工作的最佳和最新方法。我刚刚在WSL2 Ubuntu 22.04.2 LTS和mysql 8.0.34上成功实施了这个方法。
更新Ubuntu,安装mysql,启动mysql服务器:
sudo apt update && sudo apt upgrade
sudo apt install mysql-server
sudo /etc/init.d/mysql start
在这个时候,
sudo mysql
命令可以让你登录到mysql,但是如果你运行
mysql -u root
命令,你会遇到
WSL: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
错误。
以下是解决sock错误的方法:
sudo chmod 777 -R /var/run/mysqld
然而,当你尝试运行 mysql -u root
时,你会得到 ERROR 1698 (28000): Access denied for user 'root'@'localhost'
的错误。你需要更新mysql的root密码。可以通过进入mysql控制台手动完成这个操作:
sudo mysql
然后在MySQL控制台运行以下命令以更新密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'INSERT_PASSWORD_HERE';
FLUSH PRIVILEGES;
然后,退出mysql控制台后,输入以下内容:
mysql -u root -p
输入你的用户名和密码,你就可以进入mysql控制台了!这样一来,你就可以运行sudo mysql_secure_installation
(如果你想的话),而不会出现访问被拒绝或sock错误。
关于sudo mysql
也出现访问被拒绝的问题:你可能已经通过尝试另一个帖子上的某个答案搞砸了你的mysql root用户。从技术上讲,通过授权表格可以恢复它,但我花了4个小时尝试,发现重新设置我的WSL实例并按照上面的指南操作比弄清楚如何使其工作更快。由你决定。
[client]
配置,解决了wsl-socket连接问题“无法通过套接字连接到本地MySQL服务器”。谢谢先生!由于我将mysql-server托管在其他地方,所以不需要做其他操作。 - zegmysql-server
后,/etc/mysql/my.cnf
似乎已经包含了这些行。对我有效的是对这三个目录进行chmod
操作。 - Tylermysqld
命令启动MySQL出了一些问题,所以我只是用sudo mysql
来启动。我不知道为什么它不起作用,也许是因为我使用了sudo权限安装。 - undefined