问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Homebrew安装MySQL 8教程:从安装到root密码设置及认证插件修改

创作时间:
作者:
@小白创作中心

Homebrew安装MySQL 8教程:从安装到root密码设置及认证插件修改

引用
1
来源
1.
https://www.cnblogs.com/Flat-White/p/18166721

Homebrew安装MySQL 8

brew install mysql

安装完成后,系统会提示一些注意事项:

We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
MySQL is configured to only allow connections from localhost by default
To connect run:
mysql -u root
To start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/mysql/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql

Homebrew安装的MySQL默认情况下没有root密码。不填写密码的情况下可以直接通过Navicat连接(需要先开启MySQL服务)。如需通过Homebrew安装MySQL 5.7,可参考相关教程

设置root密码

  1. 启动MySQL服务:
brew services start mysql
  1. 连接到MySQL:
mysql -u root
  1. 设置root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
# 或者使用以下语句:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES; # 刷新权限

注意:经过测试以下设置root密码SQL语句对于MySQL 8.3.0均不适用

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('root'))))) WHERE user='root';
  • 第一条是因为PASSWORD()函数在MySQL 8中已弃用,并且root密码不再由PASSWORD字段存储。
  • 第二条在MySQL认证插件不为mysql_native_password时不可用。在2024-4-29时通过brew安装的MySQL 8.3.0默认认证插件为caching_sha2_password

可以通过以下SQL查询当前MySQL使用的认证插件:

SELECT plugin FROM mysql.user WHERE user='root';

重置root密码为空

如果还能连接上MySQL,可以选择如下三条SQL语句中任意一句重置密码为空:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
UPDATE mysql.user SET authentication_string='' WHERE user='root' AND host = 'localhost';
FLUSH PRIVILEGES; # 刷新权限

如果不能连接上MySQL,可以按照以下步骤重置:

brew services stop mysql
brew uninstall mysql
rm -rf /opt/homebrew/var/mysql # 删除MySQL数据目录
brew install mysql

修改MySQL认证插件

根据上述测试可知,MySQL认证插件实际上由msyql.user.plugin字段记录。因此也可以通过SQL语句查看/修改认证插件:

SELECT plugin FROM mysql.user WHERE user='root'; # 查看认证插件
UPDATE mysql.user SET plugin='caching_sha2_password' WHERE user='root'; # 更新plugin字段记录为caching_sha2_password
UPDATE mysql.user SET plugin='mysql_native_password' WHERE user='root'; # 更新plugin字段记录为mysql_native_password

如果需要更改请使用以下SQL:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY ''; FLUSH PRIVILEGES; # 修改认证插件为caching_sha2_password并重置root密码为空
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES; # 修改认证插件为mysql_native_password并重置root密码为空

参考及引用

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号