MacOSX自制mysql root密码

Ali*_*kov 92 mysql

出于某种原因,MySQL停止为root提供访问权限.使用Homebrew卸载并重新安装.新鲜的安装,新鲜的桌子,但当我进入

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

用户'root'@'localhost'拒绝访问(使用密码:否)

我重新安装了MySQL五次,但仍然要求输入密码.我该如何解决?

ege*_*ano 95

只需运行此命令(其中NEWPASS是您的密码):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS
Run Code Online (Sandbox Code Playgroud)

我有同样的错误并以这种方式修复它.

  • 为我工作.显然(也许),美元符号($)必须作为命令的一部分输入(它不仅仅是一个shell提示符). (14认同)
  • 对于 mariadb,如果您的用户访问被拒绝:`sudo $(brew --prefix mariadb)/bin/mysqladmin -u root 密码 NEWPASS` (10认同)
  • 我建议不要在命令中包含NEWPASS以避免存储在shell的历史文件中.如果你在没有通行证的情况下运行它,那个命令会自动询问输入,所以没有理由这样做.:) (3认同)
  • 如果使用mariadb:`$(brew --prefix mariadb)/ bin/mysqladmin -u root密码NEWPASS` (3认同)
  • 对于mariadb(甚至带有@bryceadams注意),对我不起作用:/ usr / local / opt / mariadb / bin / mysqladmin:连接到“本地主机”的服务器失败错误:“用户'root'@'本地主机的访问被拒绝' (3认同)
  • @BrentFoust当然.我在命令行shell命令的开头消除了`$`char的用法.其他人可能会感到困惑,因为`$`符号通常用作SO和其他论坛上的shell提示标记.但是`$`和`之间缺乏空格(`也应该提到人们的线索. (2认同)

sta*_*her 72

这些都不适合我.我想我已经在我的电脑上的某个地方安装了mysql,所以在那里设置了密码.花了几个小时尝试每个解决方案后,这对我有用:

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot
Run Code Online (Sandbox Code Playgroud)

归功于@Ghrua

  • 完善.谢谢 (6认同)
  • 以前的帖子对我来说不起作用,但是这一篇文章虽然破坏性很好. (6认同)
  • 当你最终登录到 mysql 时,使用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';` 设置新的 root 密码。 (3认同)
  • 这是完美的答案 (2认同)

小智 61

几天前我遇到了同样的问题.在安装mysqlvia homebrew启动守护程序之前运行初始化脚本(mysql_install_db)时会发生这种情况.mysql

要修复它,您可以删除mysql数据文件,重新启动服务,然后运行初始化脚本:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用mysql_install_db,请考虑使用`mysqld --initialize` (3认同)

abl*_*ike 58

如果您无意中设置并忘记了root密码,并且您不想擦除所有数据库并重新开始,因为您很懒,并且忘记了备份解决方案,并且您使用的是最新的Homebrew安装(2013年冬季),以下是重置MySQL密码的步骤.

停止当前运行的MySQL实例

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Run Code Online (Sandbox Code Playgroud)

现在手动启动mysql跳过授权表和网络

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking
Run Code Online (Sandbox Code Playgroud)

请注意,如果运行echo $(brew --prefix mysql)并且它在bash 中没有响应为"/ usr/local/opt/mysql",则需要相应地调整路径.

完成此操作后,您现在应该有一个正在运行的,未受保护的MySQL实例.

登录并设置密码

mysql -u root
Run Code Online (Sandbox Code Playgroud)

在提示符下,输入以下MySQL命令为受影响的用户设置新密码.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';
Run Code Online (Sandbox Code Playgroud)

如果一切都按计划进行,应该说:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

退出MySQL提示符.

mysql> exit
Bye
Run Code Online (Sandbox Code Playgroud)

停止服务器:

mysqladmin -u root shutdown
Run Code Online (Sandbox Code Playgroud)

现在,让我们放回启动守护程序,这样我们就可以再次准备好MySQL了:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Run Code Online (Sandbox Code Playgroud)

恭喜.你刚刚重置了你的mysql root密码.给自己倒一杯咖啡,并获得备用解决方案!

  • 我刚遇到这个问题,发现这个答案是最接近的.我注意到`password`不是mysql 5.7.9中的有效列.相反,我不得不使用`authentication_string`.其余说明完美无缺.谢谢! (8认同)
  • 更改密码后停止未受保护的MySQL服务器:`mysqladmin -u root shutdown` (5认同)
  • 正如M. Scott Ford所说,正确的命令是:`update user set authentication_string = password('new_password_here')where user ='root';` (3认同)
  • 我不得不运行`update mysql.user set authentication_string = password('none')where user ='root';`for it to work.(就像我上面的评论一样,但是先将`mysql`添加到`user`.) (3认同)
  • 自 mysql 8.0.11 起删除了密码功能。详情 [更多](https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_password) (2认同)

Nir*_*han 42

通过home brew安装mysql后出现此错误.

所以首先删除安装.然后通过Homebrew重新安装

brew update
brew doctor
brew install mysql
Run Code Online (Sandbox Code Playgroud)

然后重启mysql服务

 mysql.server restart
Run Code Online (Sandbox Code Playgroud)

然后运行此命令以设置新的root密码.

 mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

最后它会要求重新加载权限.说是的.然后再次登录mysql.并使用您设置的新密码.

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)


Aru*_*ius 21

如果您在 Mojave、Catalina、Big Sur 和现在的 macOS Monterey 上运行:

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''
Run Code Online (Sandbox Code Playgroud)

使用 root 帐户登录也失败:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)

然后创建默认管理员用户与您的MacOS帐户用户名相同的名称,例如johnsmit

要以 root 身份登录并设置 root 密码,请发出(使用您的用户名):

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ROOT-PASSWORD';
Query OK, 0 rows affected (0.006 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye
Run Code Online (Sandbox Code Playgroud)

所以你在本地主机上从 mysql 更改 root 密码。

奖励:要更改当前或其他用户通行证,您可以使用mysqladmin命令:

$(brew --prefix mariadb)/bin/mysqladmin -u arunas password 'newsecret'
Run Code Online (Sandbox Code Playgroud)

但这出于某种原因不会影响本地主机,但应该适用于应用程序登录。

或者使用本机 MySQL 更改用户密码 SQL,它明确指定主机,在我的例子中是用户的 'localhost' 帐户:

mariadb -u arunas
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.5.9-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> ALTER USER 'arunas'@'localhost' IDENTIFIED BY 'newsecret';
Query OK, 0 rows affected (0.006 sec)

MariaDB [(none)]> exit
Bye
Run Code Online (Sandbox Code Playgroud)

现在让我们尝试不使用密码登录:

mariadb -u arunas
ERROR 1045 (28000): Access denied for user 'arunas'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

您看到登录失败,因此现在我们需要指定密码的需要:

mariadb -u arunas -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.9-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye

Run Code Online (Sandbox Code Playgroud)

祝使用愉快!

  • MacOS 帐户名称为我做到了。 (4认同)
  • 终于有一些答案解决了我的问题! (2认同)

小智 10

  1. 转到苹果图标 --> 系统偏好设置
  2. 打开Mysql
  3. 在实例中你会看到“初始化数据库”
  4. 点击那个
  5. 系统会要求您设置 root 密码 --> 在那里设置一个强密码
  6. 下次使用该密码登录mysql

希望这可以帮助。


Shi*_*i.J 8

由于这个问题很久以前就被问过/回答过,那些最重要的答案对我不起作用。这是我在 2020 年的解决方案。

背景:由自制软件安装的新鲜 mysql/mariadb。

问题:root 的密码不为空且未知。

修复

  1. mysql -u 你的系统用户名 -p
  2. 密码为空(按回车键)
  3. ALTER USER 'root'@'localhost' IDENTIFIED by 'NEW-ROOT-PASSWORD';
  4. 同花顺特权;

原因

  1. Homebrew 将创建一个以当前 MacOS 用户名命名的具有 root 权限的用户。
  2. 它没有密码
  3. 由于它拥有所有权限,只需使用该用户重置 root 密码即可。
  4. root 的初始密码是随机生成的。

  • 对于现代 MacOS 和来自 homebrew 的最新 MariaDB,这应该是 2023 年的首要答案 (2认同)

Béa*_*tat 7

这对我有用:

sudo mysql -u root
Run Code Online (Sandbox Code Playgroud)


小智 7

尝试使用sudo以避免“访问被拒绝”错误:

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


Maj*_*Afy 7

如果您使用的是 macOS 并通过 Homebrew 安装 MariaDB,您可以使用操作系统 root 密码,然后将密码重置为您想要的任何内容,在这种情况下,我删除了 root 的密码:

sudo mysqladmin -u root password ''
Run Code Online (Sandbox Code Playgroud)

或者,如果您想设置密码,可以将密码放在单引号之间:

sudo mysqladmin -u root password 'NEW-PASSWORD-HERE'
Run Code Online (Sandbox Code Playgroud)