wsl 安装 mysql 报错

2,277 阅读1分钟
  1. 安装mysql

    sudo apt install mysql-server

    一般情况都会成功,默认安装的是5.x版本,如果安装8.x版本需要以下几步

    • cd /tmp
    • curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
    • sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
    • 第一个选项回车
    • 键盘按上下,选择你需要的版本,回车
    • 键盘按下,OK回车退出
    • sudo apt update
    • sudo apt install mysql-server
  2. 修改配置

    此时使用sudo service mysql start发现失败,看日志/var/log/mysql/error.log有报错

    需要修改配置文件

    1. sudo vim /etc/mysql/conf.d/mysql.cnf 增加以下配置

      [mysqld]
      innodb_use_native_aio = 0
      
    2. sudo vim /etc/mysql/mysql.conf.d/mysqld_safe_syslog.cnf 注释掉以下配置

      [mysqld_safe]
      # syslog
      
  3. 执行 sudo mysql_secure_installation 按提示操作

  4. 启动 sudo service mysql start

  5. 执行mysql -uroot -p,输入密码后报错

Some systems like Ubuntu, mysql is using by default the UNIX auth_socket plugin. Basically means that: db_users using it, will be "auth" by the system user credentias. You can see if your root user is set up like this by doing the following:

解决方案先使用 sudo mysql -uroot 进入mysql中

可以看到 root 使用的是 auth_socket

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+

两个解决方案 stackoverflow

  1. root使用 mysql_native_password plugin
  $ sudo mysql -u root # I had to use "sudo" since is new installation

  mysql> USE mysql;
  mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
  mysql> FLUSH PRIVILEGES;
  mysql> exit;

  $ service mysql restart
  1. 新建一个用户
$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart