首页 > 数据库 >【教程】Homebrew安装MySQL 8 & 设置root密码

【教程】Homebrew安装MySQL 8 & 设置root密码

时间:2024-04-29 22:01:14浏览次数:18  
标签:MySQL user mysql Homebrew password root localhost

✨Homebrew安装MySQL 8

brew install mysql

==> Caveats
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服务)

image-20240429165317254

image-20240429165333365


如需通过Homebrew安装MySQ L 5.7 可参考

https://www.cnblogs.com/Flat-White/p/15826760.html


✨设置root密码

启动MySQL

brew services start mysql

连接MySQL

mysql -u root

设置root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
# ALTER USER 'root'@'localhost' IDENTIFIED BY '需要设置的密码';
FLUSH PRIVILEGES; # 刷新权限

or

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '需要设置的密码';
FLUSH PRIVILEGES; # 刷新权限

image-20240429204547631


以下内容仅仅花费一个下午反复测试才弄清楚缘由(苦笑.jpg)

注意:经过测试以下设置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';

image-20240429213916460


经过测试如果SQL执行顺序如下

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
SELECT authentication_string FROM mysql.user WHERE user='root';

ALTER USER 'root'@'localhost' IDENTIFIED BY '';
SELECT authentication_string FROM mysql.user WHERE user='root';

UPDATE mysql.user SET authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('root'))))) WHERE user='root';
SELECT authentication_string FROM mysql.user WHERE user='root';

FLUSH PRIVILEGES;

image-20240429214327720

由于第一条SQL已经更改MySQL认证插件为mysql_native_password

此时CONCAT('*', UPPER(SHA1(UNHEX(SHA1('root')))))与第一条SQL更新的authentication_string字段值实际上一致

因此同样可以通过“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

✨参考及引用

https://stackoverflow.com/questions/7534056/mysql-root-password-change

https://stackoverflow.com/questions/52320576/in-mysql-server-8-0-the-password-function-not-working

https://stackoverflow.com/questions/52320576/in-mysql-server-8-0-the-password-function-not-working


⭐转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/18166721

版权所有,如需转载请注明出处。

标签:MySQL,user,mysql,Homebrew,password,root,localhost
From: https://www.cnblogs.com/Flat-White/p/18166721

相关文章

  • Mysql启动报错:Job for mysqld.service failed because the control process exited wi
      该方法会删除mysql数据,慎用centos7上使用yum安装mysql后,启动报错[root@localhost~]#systemctlstartmysqldJobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusmysqld.service"and"journalctl-xe"for......
  • Mysql锁机制与优化实践以及MVCC底层原理剖析
    学习来源-图灵课堂https://vip.tulingxueyuan.cn锁学习参考:https://juejin.cn/post/7307889500545253395  锁机制为了保证数据的一致性,当访问共享变量的时候我们可以针对共享数据加锁,但是加锁要时要注意加锁的成本,还有加锁的粒度,还有就是是否会发生死锁,还有就是发生了死锁......
  • 3分钟部署mysql并开启binlog
    curl-fsSLhttps://get.docker.com|bashyum-yinstalldocker-cesudosystemctlstartdockersudosystemctlenabledockermysql快速安装sudodockerpullmysqlmkdir-p/opt/module/mysql/conf/opt/module/mysql/data/opt/module/mysql/conf/config.d/touch/opt......
  • Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)
    Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)首先,我们需要准备数据库连接所需的jar包。目前mysql的驱动包可能比较好找,但是oracle和sqlserver的有很多,要找到能用的要花一点点心思,这里直接把下载地址和版本发送出来。Mysql:驱动程序包:mysql-connector-java-5.1.3......
  • mysql-undo log
    MySQL的UndoLog(回滚日志)是InnoDB存储引擎中一个核心的组件,它主要有以下两个目的:确保事务的原子性支持多版本并发控制(MVCC)1.事务的原子性保证UndoLog记录了数据更改之前的状态。当一个事务开始修改数据时,InnoDB首先会在UndoLog中记录这些更改的反向操作(比如,一个......
  • Docker安装MySQL 5.7
    1.创建数据存储目录先创建3个目录,创建MySQL容器时会挂载容器的卷。mkdirlogmkdirdatamkdirconf2.Docker仓库查看MySQL3.拉取镜像dockerpullmysql:5.74.创建MySQL配置文件[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[......
  • openGauss mysql_fdw
    mysql_fdwmysql_fdw是一款开源插件。openGauss基于开源的mysql_fdwRelease2.5.3版本进行开发适配。编译和使用mysql_fdw需要环境上包含MariaDB的开发包,所以openGauss默认不编译mysql_fdw,下面依次介绍如何编译和使用mysql_fdw。编译mysql_fdw编译mysql_fdw需要安装MariaDB的......
  • linux系统 centos7禁止root账号登录
    没有账号的新增账号:sudouseradd-m账号名称sudopasswd账号名称执行完上面命令会让你输入密码输入密码:xxxxxxx1、(注意:禁止root账户登陆前确保有其他账户可以正常使用)编辑配置文件`/etc/ssh/sshd_config`,将`PermitRootLoginyes`改为`PermitRootLoginno`  2、执......
  • python 操作数据库(mysql)
    python操作数据库,可以有如下几种方式。1.安装pymysql。(python的一个mysql的插件,意思就是这个服务本身就是通过python来进行安装的)2.安装mysql-connector。(数据库服务,类似java种的mysql-connector,通过mysql连接工具,可以连接上远程的mysql服务器)使用pip安装插件:python-mpip......
  • openGauss mysql_fdw
    mysql_fdwmysql_fdw是一款开源插件。openGauss基于开源的mysql_fdwRelease2.5.3版本进行开发适配。编译和使用mysql_fdw需要环境上包含MariaDB的开发包,所以openGauss默认不编译mysql_fdw,下面依次介绍如何编译和使用mysql_fdw。编译mysql_fdw编译mysql_fdw需要安装MariaDB的......