Ubuntu WSL下全新安装MySQL后初始化无安全模式及登录问题
MySQL在Ubuntu WSL初始化及登录问题
初始问题
在Ubuntu WSL中全新安装MySQL后,执行mysqld --initialize-insecure初始化无安全模式失败,报错如下:
mysqld --initialize-insecure mysqld: Can't create directory '/var/lib/mysql/' (OS errno 17 - File exists) 2023-05-22T17:35:25.059166Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.33-0ubuntu0.20.04.2) initializing of server in progress as process 8886 2023-05-22T17:35:25.059914Z 0 [ERROR] [MY-010187] [Server] Could not open file '/var/log/mysql/error.log' for error logging: Permission denied 2023-05-22T17:35:25.059949Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. 2023-05-22T17:35:25.059954Z 0 [ERROR] [MY-010119] [Server] Aborting 2023-05-22T17:35:25.060000Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.33-0ubuntu0.20.04.2) (Ubuntu).
已尝试将日志权限设置为mysql:mysql,并清空/var/lib/mysql/目录,但问题仍未解决,如何成功初始化无安全模式?
补充问题
修改目录权限为当前用户后,初始化命令执行成功,得到提示:
[Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
但执行mysql -u root时仍报错:
mysql -u root ERROR 1698 (28000): Access denied for user 'root'@'localhost'
环境为开发工作站,非生产环境,此时root用户应该可以正常登录,如何解决?
解决方案
一、初始化失败修复
核心问题:数据目录和日志目录的权限未正确归属mysql用户,且初始化命令需以mysql身份执行
- 停止MySQL服务:
sudo systemctl stop mysql - 清空数据目录残留文件:
sudo rm -rf /var/lib/mysql/* - 修正目录权限:
sudo chown -R mysql:mysql /var/lib/mysql/ sudo chown -R mysql:mysql /var/log/mysql/ - 以
mysql用户身份执行初始化:sudo -u mysql mysqld --initialize-insecure
二、root登录失败修复
核心原因:Ubuntu下MySQL 8.0默认root用auth_socket插件认证,不接受密码登录
- 通过sudo免密登录MySQL:
sudo mysql -u root - 修改root认证方式为密码认证(开发环境设为空密码):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES; - 退出后即可直接执行
mysql -u root登录。
如果需要设置密码,将SQL语句中的空字符串替换为你的密码即可,之后用mysql -u root -p登录。
内容的提问来源于stack exchange,提问作者Syl
相关产品推荐
相关产品推荐

