You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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身份执行

  1. 停止MySQL服务:
    sudo systemctl stop mysql
    
  2. 清空数据目录残留文件:
    sudo rm -rf /var/lib/mysql/*
    
  3. 修正目录权限:
    sudo chown -R mysql:mysql /var/lib/mysql/
    sudo chown -R mysql:mysql /var/log/mysql/
    
  4. 以mysql用户身份执行初始化:
    sudo -u mysql mysqld --initialize-insecure
    

二、root登录失败修复

核心原因:Ubuntu下MySQL 8.0默认root用auth_socket插件认证,不接受密码登录

  1. 通过sudo免密登录MySQL:
    sudo mysql -u root
    
  2. 修改root认证方式为密码认证(开发环境设为空密码):
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
    FLUSH PRIVILEGES;
    
  3. 退出后即可直接执行mysql -u root登录。

如果需要设置密码,将SQL语句中的空字符串替换为你的密码即可,之后用mysql -u root -p登录。

内容的提问来源于stack exchange,提问作者Syl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:28:12