WSL 安装 MySQL

安装

apt 库有现成的包,直接执行命令安装

sudo apt install mysql-server
配置

执行以下命令

sudo mysql_secure_installation

可能会出现以下报错:

Securing the MySQL server deployment.

Enter password for user root:
Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

先重启一下 MySQL 服务

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

执行 start 的时候可能又会报错:

 * Starting MySQL database server mysqld                                
No directory, logging in with HOME=/
mkdir: cannot create directory ‘//.cache’: Permission denied
-su: 19: /etc/profile.d/wsl-integration.sh: cannot create //.cache/wslu/integration: Directory nonexistent

解决办法:

usermod -d /var/lib/mysql/ mysql
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
chown -R mysql:mysql /var/lib/mysql

回到第 2 步,再次执行 sudo mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: N # 否
Please set the password for root here.
# 设置你的密码
New password:

Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
# 是否移除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N

 ... skipping.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
# 是否禁止 root 远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

# 是否移除 test 数据库
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N

 ... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
# 是否立即刷新表的权限
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

配置完成后,重启 MySQL 服务

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

尝试登录

mysql -uroot -p
Enter password:

输入密码后可能又会报错

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

打开 MySQL 配置文件 /etc/mysql/my.cnf,在 [mysqld]下新增一行 skip-grant-tables

此操作可以不输入密码登录 MySQL

此处登录不上去并不是密码错误

再次重启 MySQL

免密登录

> mysql -uroot -p
# 直接回车可以登录
> use mysql;
> select user,plugin from user;
# 可以看到 root 用户的 plugin 为 auth_socket,需要修改为 mysql_native_password
> update user set plugin="mysql_native_password" where user="root";
> quit # 退出

打开 MySQL 配置文件 /etc/mysql/my.cnf,将 skip-grant-tables 注释或者删除

再次重启 MySQL 就可以登录成功了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值