MacOS homebrew mysql root密码
Posted
技术标签:
【中文标题】MacOS homebrew mysql root密码【英文标题】:MacOSX homebrew mysql root password 【发布时间】:2012-03-30 12:32:34 【问题描述】:由于某种原因 mysql 停止授予 root 访问权限。使用 Homebrew 卸载并重新安装。全新安装,全新表格,但当我进入时
mysql -u root -p
我收到此错误:
拒绝用户“root”@“localhost”访问(使用密码:否)
我重新安装了 MySQL 五次,但它仍然要求输入密码。我该如何解决这个问题?
【问题讨论】:
超级用户几乎有一个确切的问题。请按照以下步骤操作:superuser.com/a/400345 只需运行mysql_secure_installation
并回答提出的问题,很简单
mysql_secure_installation 命令提示输入 root 密码;如果您已设置并忘记了它,此过程将无济于事。
如果 brew 安装了 MySQL 5.7,请按照以下步骤操作:***.com/a/33924648/133106
FWIW mysql -u root
在这里工作...
【参考方案1】:
这些都不适合我。我想我已经在我的电脑某处安装了 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
感谢@Ghrua
【讨论】:
以前的帖子对我没有用,但是这个虽然破坏性很好。 当你最终登录mysql时,使用ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';
设置你的新root密码。
这对我有用,而无需删除我现有的数据库
终于找到了一个合适的解决方案。 @2020 MacOs catalina。
这几乎对我有用,我做了什么:brew services stop mysql; brew uninstall mysql; pkill mysqld; rm -rf /usr/local/var/mysql; rm /usr/local/etc/my.cnf; brew postinstall mysql; brew install mysql; brew services restart mysql; mysql -uroot
【参考方案2】:
只需运行此命令(NEWPASS
是您的密码):
$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS
我遇到了同样的错误,并以这种方式修复了它。
【讨论】:
为我工作。显然(也许),美元符号 ($) 必须作为命令的一部分输入(它不仅仅是一个 shell 提示符)。 我建议不要在命令中包含 NEWPASS 以避免存储在 shell 的历史文件中。如果您在没有通行证的情况下运行该命令,该命令将自动要求输入,因此没有理由这样做。 :) 如果使用 mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
不适用于我,使用 mariadb(即使使用 @bryceadams 注释):/usr/local/opt/mariadb/bin/mysqladmin:连接到“localhost”的服务器失败错误:“访问被拒绝用户'root'@'localhost''
对于 mariadb,如果您拒绝用户访问:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
【参考方案3】:
如果您无意中设置并忘记了根密码,并且您不想擦除所有数据库并重新开始,因为您很懒惰并且忘记了备份解决方案,并且您正在使用相当最近的 Homebrew 安装(2013 年冬季),这里是重置 MySQL 密码的步骤。
停止当前运行的 MySQL 实例
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
现在手动启动 mysql,跳过授权表和网络
$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking
请注意,如果当您运行 echo $(brew --prefix mysql) 并且它在 bash 中没有响应为 "/usr/local/opt/mysql" ,您将需要相应地调整路径。
完成此操作后,您现在应该有一个正在运行的、未受保护的 MySQL 实例。
登录并设置密码
mysql -u root
在提示符下,输入以下 MySQL 命令为受影响的用户设置新密码。
mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';
如果一切按计划进行,它应该说:
Query OK, 1 row affected (0.02 sec)
Rows matched: 4 Changed: 1 Warnings: 0
退出 MySQL 提示符。
mysql> exit
Bye
停止服务器:
mysqladmin -u root shutdown
现在,让我们放回启动守护进程,以便我们的 MySQL 再次准备就绪:
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
恭喜。您刚刚重置了 mysql root 密码。给自己倒杯咖啡,准备好备用解决方案!
【讨论】:
更改密码后停止未受保护的 MySQL 服务器:mysqladmin -u root shutdown
我刚遇到这个问题,发现这个答案是最接近的。我确实注意到password
不是 mysql 5.7.9 中的有效列。相反,我不得不改用authentication_string
。其余的说明运行良好。谢谢!
正如 M. Scott Ford 所说,正确的命令是:update user set authentication_string=password('new_password_here') where user='root';
我必须运行 update mysql.user set authentication_string=password('none') where user='root';
才能让它工作。 (就像我上面的评论一样,但在 mysql.
前面加上 user
。)
密码功能自 mysql 8.0.11 起被移除。详情more【参考方案4】:
几天前我遇到了同样的问题。当您通过homebrew
安装mysql
并运行初始化脚本(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
【讨论】:
非常适合我。我实际上并不想为我的本地机器设置密码,所以其他解决方案并不是我真正想要的 mysql_install_db 已弃用,考虑使用mysqld --initialize
当我运行第一个命令时,我得到了No such file or directory
。
在运行 mysqld --initialize 命令后,您会在控制台上的日志消息中注意到它为 root 用户设置了临时密码。复制该密码并在下次触发命令时使用密码“mysql -uroot -p " -- 它肯定会工作 .. 然后 mysql 会要求你重置密码 .. 看看这个dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
@VikrantLabde “它肯定会奏效”——非常雄心勃勃的声明。我试过这个,使用它给我的临时密码,但它仍然没有授予访问权限。您是否必须用反斜杠转义任何标点符号?【参考方案5】:
通过 home brew 安装 mysql 后出现此错误。
所以首先删除安装。然后通过 Homebrew 重新安装
brew update
brew doctor
brew install mysql
然后重启mysql服务
mysql.server restart
然后运行此命令来设置您的新 root 密码。
mysql_secure_installation
最后它会要求重新加载权限。说是。然后再次登录mysql。并使用您设置的新密码。
mysql -u root -p
【讨论】:
这是完美的解决方案。我已经尝试过运行mysql_secure_installation
,但关键部分是mysql.server restart
mysql_secure_installation 是关键部分
为了避免头痛......只需像 nirojan 所说的那样输入使用重启命令,然后运行 mysql_secure_installation【参考方案6】:
如果您在 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''
使用 root 帐户登录也失败:
mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
然后创建默认管理员用户与您的 MacOS 帐户 用户名 相同的名称,例如约翰斯密特。
要以 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
所以你在 localhost 上从 mysql 更改 root 密码。
奖励:要更改当前或其他用户通行证,您可以使用mysqladmin
命令:
$(brew --prefix mariadb)/bin/mysqladmin -u arunas password 'newsecret'
但是由于某种原因这不会影响本地主机,但应该适用于应用程序登录。
或者使用本地 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
现在让我们尝试无密码登录:
mariadb -u arunas
ERROR 1045 (28000): Access denied for user 'arunas'@'localhost' (using password: NO)
您看到登录失败,因此现在我们需要指定密码的需要:
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
祝您使用愉快!
【讨论】:
MacOS 帐户名帮我完成了。 macos账号名用户可以加密码吗? 可以,但是如何更改root密码? 与显示的任何用户示例相同,但添加了在首次登录时一次性更改 root 密码的说明。【参考方案7】:这对我有用:
sudo mysql -u root
【讨论】:
sudo 成功了 如果您正在运行 macOS Monterey 12.1 并使用 brew 安装了全新的 MariaDB 并希望从终端访问 mysql,这是正确的答案。【参考方案8】:由于很久以前提出/回答了这个问题,因此这些热门答案对我不起作用。这是我在 2020 年的解决方案。
背景:自制安装的新鲜 mysql/mariadb。
问题:root的密码不为空且未知。
修复:
-
mysql -u 你的系统用户名 -p
密码为空(按回车键)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW-ROOT-PASSWORD';
刷新特权;
原因:
-
Homebrew 将创建一个以当前 MacOS 用户名命名的具有 root 权限的用户。
它没有密码
由于它拥有所有权限,只需使用该用户重置 root 密码。
root 的初始密码是随机生成的。
【讨论】:
2020年正确答案。我无法要求输入 MacOS 用户名的密码 上述方法无效。 mysql_secure_installation 在 Catalina 上为我工作。 从今天开始,从高山脉到卡塔利娜,brew install mariadb (mariadb: stable 10.6.4 (bottled)。我能够做到 mysql -uroot -proot【参考方案9】:尝试使用sudo
以避免“访问被拒绝”错误:
sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
【讨论】:
【参考方案10】:-
转到苹果图标 --> 系统偏好设置
打开Mysql
在某些情况下,您会看到“初始化数据库”
点击那个
您将被要求为 root 设置密码 --> 在那里设置一个强密码
下次使用该密码登录mysql
希望这会有所帮助。
【讨论】:
简单易行的方法。谢谢。 谢谢。它终于对我有用。并且不要忘记在上述过程之后启动服务器。它与“初始化数据库”在同一窗口中【参考方案11】:这对我有用。希望这对你也有用!!! 跟着他们。
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!!!!';
【讨论】:
你要警告,运行rm -rf /usr/local/var/mysql/
命令会删除你电脑上的所有数据库和Mysql数据!【参考方案12】:
我刚刚注意到这里大多数答案的共同点,并在我的全新安装中得到了确认。如果您查看在没有 -p
的情况下运行 mysqladmin -u root
的建议,这实际上是显而易见的。
没有密码。
Brew 只使用 root 用户设置 mysql,根本没有密码。我想这是有道理的,但安装后的注意事项根本没有提及。
【讨论】:
我在没有root密码的情况下遇到了访问被拒绝的问题,所以我认为这个问题并不明显。 我并不是说这个问题很明显;对于在正常情况下使用过 MySQL 的人来说,这完全是令人困惑的。但看看其他回复,原因就很清楚了。【参考方案13】:这对我来说适用于 MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx
通过运行启动mysql
brew服务启动mysql
运行安装脚本
mysql_secure_installation
您将被要求设置一个设置验证密码插件。输入 y 以执行此操作。
选择所需的密码验证(如果只是您使用数据库,则无关紧要)
现在为所有剩余选项选择 y:删除匿名。用户;禁止远程root登录;删除测试数据库;重新加载权限表。 现在你应该收到一条消息
All done!
【讨论】:
启动mysql 5.7 使用***.com/questions/51573145/…【参考方案14】:我在 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
然后在mysql提示符下如果要为root用户设置密码:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ToPsEcReT');
【讨论】:
所以本站信息有误? ,因为它声称mysql_secure_installation
应该可以工作? mariadb.com/resources/blog/…
当我运行 brew install mysql_install_db 是由 brew 触发的。该博客文章建议手动运行它。也许酿造过程改变了:耸耸肩:
我刚刚在我的mac上安装了mariadb 10.5.6,并且能够使用mariadb -u root
(无需密码)【参考方案15】:
在终端中运行这些行对我和其他几个遇到同样问题的人来说是成功的。这些说明在 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 的密码。
【讨论】:
我在运行这些命令时得到No such file or directory
【参考方案16】:
检查您的主目录中没有隐藏 .my.cnf。那是我的问题。
【讨论】:
【参考方案17】:所以,如果有人遇到与我相同的情况和配置并且也即将发疯 - 这对我有用。
说来话长,我有一个安装了 brew 的 MariaDB,当我终止它的进程时它会自动重启(这是 brew 所做的),它有一个 root 密码,我没有这样做 知道。
$ 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 用户表的旧方法不起作用,因为“列'密码'不可更新”。
新方法使用 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
重新启动它。
【讨论】:
【参考方案18】:我也偶然发现了这个问题,解决方案是简单地运行这个:
mysql
【讨论】:
【参考方案19】:如果您使用 macOS 并通过 Homebrew 安装 MariaDB,您可以使用 OS 根密码,然后将密码重置为您想要的任何密码,在这种情况下,我删除了根密码:
sudo mysqladmin -u root password ''
或者如果你想设置密码,你可以把密码放在单引号之间:
sudo mysqladmin -u root password 'NEW-PASSWORD-HERE'
【讨论】:
【参考方案20】:通过 brew 安装 mysql 时的默认密码是 root 试试这个,它对我有用
mysql -uroot -proot
【讨论】:
来自brew info mysql
:我们已经在没有root密码的情况下安装了您的MySQL数据库。为了保护它运行:mysql_secure_installation
@ssc 在全新安装中设置密码的最佳方式。【参考方案21】:
1号航站楼:
$ mysql_safe
2号航站楼:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
【讨论】:
这在发布答案时可能有效,但同时中断了;使用(当前)MySQL 版本 5.7.21,它会因“字段列表”中的“未知列“密码”而失败。 UPDATE mysql.user SET authentication_string=PASSWORD('xxxxxx!') WHERE User='root';【参考方案22】:我正在使用 Catalina 并使用此 mysql_secure_installation
命令,现在对我有用:
$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): << enter root here >>
我输入 root
作为当前密码
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
然后做剩下的
【讨论】:
【参考方案23】:对我来说,mysql 是用 root 用户设置的,没有密码。
我希望能够以当前用户身份登录,而不需要 -u root
位。我使用以下命令设置超级用户:
mysql -u root -e "CREATE USER '$USER'@'localhost';"
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO '$USER'@'localhost';"
mysql -u root -e "flush privileges;"
$USER
的任何值都可以使用。
我个人用分号将以上所有内容连接起来,但重新格式化以希望所有人更容易阅读。
【讨论】:
【参考方案24】:关注@Roman Escart 的文章。 我猜关键是使用'$brew link --force mysql@5.7' https://medium.com/macoclock/setup-mysql-in-a-specific-version-on-macos-35d8ad89c699
【讨论】:
【参考方案25】:使用init文件启动mysql修改root密码。
brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init
您的 root 密码现已更改。确保正确关闭服务器以保存密码更改。在新的终端窗口中执行
mysqladmin -u root -p shutdown
然后输入您的新通行证。
启动你的服务并移除初始化文件
brew services start mysql
rm /tmp/mysql-init
在 mysql 版本 8.0.19 上测试
【讨论】:
【参考方案26】:在 Mac 上运行 Mysql 最简单的方法是什么?
我的解决方案是安装MAMP。
https://www.mamp.info/en/mac/
【讨论】:
以上是关于MacOS homebrew mysql root密码的主要内容,如果未能解决你的问题,请参考以下文章
markdown 使用Homebrew在macOS上安装MySQL 5.7
macOS monterey 12.6.1安装homebrew + nginx + php + mysql
mac 上用homebrew安装完mysql后,怎样使用密码连接数据库
macOS monterey 12.6.1安装homebrew + nginx + php + mysql
如何使用 Homebrew 在 macOS BigSur (Apple Silicon) 上安装和启动 MySQL 5.7?