MacOSX homebrew mysql root 密码

163
由于某种原因,MySQL停止了root用户的访问权限。使用Homebrew进行了卸载和重新安装。全新安装,全新的数据表,但是当我输入时,
mysql -u root -p

我遇到了这个错误:
访问被拒绝,用户'root'@'localhost'(未使用密码)。
我已经重新安装了MySQL五次,但它仍然要求输入密码。我该如何解决这个问题?

在Superuser上几乎有一个完全相同的问题。请按照以下步骤操作:http://superuser.com/a/400345 - Icarus
18
只需运行 mysql_secure_installation 命令并回答相应问题即可,非常简单。 - Abhinav Singh
19
mysql_secure_installation命令会提示输入root密码,如果你已经设置但忘记了密码,这个步骤将无法帮助你。 - JohnG
1
如果已经安装了MySQL 5.7,请按照以下步骤操作:https://dev59.com/_2855IYBdhLWcg3waDeR#33924648 - mrucci
2
就我个人而言,“mysql -u root”在这里可行。 - rogerdpack
在 macOS 10.13 上,用户应该使用 'sudo mysql -u root' 而不是 'mysql -u root'。 - NME New Media Entertainment
27个回答

7

如果你正在使用macOS,并通过Homebrew安装MariaDB,你可以使用操作系统的根密码,然后将密码重置为任何你想要的密码,在本例中,我删除了root的密码:

sudo mysqladmin -u root password ''

或者,如果您想设置密码,可以将密码放置在单引号之间:
sudo mysqladmin -u root password 'NEW-PASSWORD-HERE'

4

我在 Mac 上进行新安装时遇到了这个问题。我使用以下命令安装了 MariaDB:

brew install mariadb 

服务随即启动:

brew services start mariadb

当我运行'mysql_secure_installation'时,由于提示输入root密码,我无法完成操作。后来我在安装输出内容中发现:

mysql_install_db --verbose --user=jonny --basedir=/usr/local/Cellar/ ....

我尝试以mysql_install_db输出中指定的用户名登录,结果成功,例如:

mysql -u jonny

如果你想为root用户设置密码,在mysql提示符下执行以下操作:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ToPsEcReT');

所以这个网站上的信息是不正确的吗?因为它声称 mysql_secure_installation 应该可以工作?https://mariadb.com/resources/blog/installing-mariadb-10-1-16-on-mac-os-x-with-homebrew/ - Luuk
当我运行brew install mysql_install_db时,它是由brew触发的。那篇博客建议手动运行它。也许brew的操作流程已经改变了:shrug: - jonny
我刚在我的Mac上安装了Mariadb 10.5.6,并且能够使用“mariadb -u root”(无需密码)。 - Luuk

2

这对我有效,希望对你也有用!!!请按照以下步骤操作:


brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
你必须警告,运行 rm -rf /usr/local/var/mysql/ 命令将会删除你电脑上的所有数据库和Mysql数据! - Lashae

2
这对我在MAC上运行的很有用。 https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx
通过运行以下命令启动mysql:
brew services start mysql
运行安装脚本:
mysql_secure_installation
您将被要求设置一个SETUP VALIDATE PASSWORD插件的设置。 输入y进行此操作。
选择所需的密码验证(如果只是您使用数据库,则并不重要)。
现在,对于所有剩余选项,请选择y:删除anon.用户; 禁止远程root登录; 删除测试数据库; 重新加载权限表。 现在,您应该收到消息:
All done!

要启动MySQL 5.7,请使用https://dev59.com/s1UK5IYBdhLWcg3wmw4S?answertab=active#tab-top - Winnipass

2
我刚刚注意到这里大部分答案的一个共同点,并在我的新安装中进行了确认。如果您查看运行mysqladmin -u root而不使用-p的建议,这实际上是显而易见的。
没有密码。
Brew仅设置了一个根用户而没有任何密码。我想这是有道理的,但是安装后的警告根本没有提到它。

3
我遇到了访问被拒绝的问题,因为我假设没有root密码,所以我认为这个问题并不明显。 - Jack Frost
我并不是说这个问题很明显;对于任何在正常情况下使用MySQL的人来说,它都是非常令人困惑的。但是看看其他的回答,原因就很清楚了。 - Spyder

1
安装mysql时,通过brew安装的默认密码是root,请尝试以下命令:mysql -uroot -proot,这对我有效。

1
brew info mysql:我们已经安装了您的MySQL数据库,但没有设置根密码。要保护它,请运行:mysql_secure_installation - ssc
@ssc 在干净的安装中设置密码的最佳方法。 - alexventuraio

1
我也遇到过这个问题,解决方法很简单,只需运行以下命令: mysql

1

请检查您的主目录中是否有一个名为 .my.cnf 的文件。这可能是问题所在。


1

所以,如果有人遇到了和我一样的情况和配置,也快要发疯了-这对我有效。

经过漫长的故事后,我安装了一个自动重启的MariaDB(这是brew的作用),当我杀死它的进程时,它就会自动重新启动。它有一个根密码,而我不知道。

$ brew services list

它显示的内容如下:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

停止MySQL服务器:

$ brew services stop mariadb

然后再次启动没有 root 用户(而且不使用brew):

$ mariadbd --skip-grant-tables &

这里,mysql_secure_installation 对我无效,因为使用了 --skip-grant-tables,而没有使用 --skip-grant-tables 又需要密码(但我没有密码)。尝试 $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2 时只返回奇怪的错误且未起作用;$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2 也不起作用,会给出不同的错误和建议,但对我无效。
但是现在你可以无凭证登录到 mysql: $ mysql
在这里,更新root用户表的旧方法不起作用,因为“列'Password'不可更新”。新方法使用alter user,但仅在您完成flush privileges;后才有效,请先执行该操作。然后执行以下操作:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
MariaDB [(none)]>是MySQL提示符)
然后再次执行flush privileges;。退出MySQL客户端。

现在就brew而言,MariaDB仍未运行,因此使用$ ps aux | grep -i mariadb查找pid并$ kill -9 <pid>。然后使用$ brew services start mariadb重新启动它。


1
在终端中运行这些命令对我和其他遇到同样问题的人都起了作用。这些指令在brew成功安装mysql后会在终端中列出。
mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

其中YOURPASSWORD是root用户的密码。


当我运行这些命令时,我只会得到“没有这个文件或目录”的错误提示。 - Agent Zebra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接