几年前,我尝试在 Mac 上安装 apache、php 和 mysql。我让它们全部运行起来,但最后我厌倦了在命令行上执行所有操作,因此改用了 mamp
现在我受够了 mamp 的迟缓,想更好地使用命令行。我正尝试自己设置它(嗯,使用 mac 端口),但我忘记了 mysql 根用户的密码。没什么大问题,那里没有我需要的数据,我只需重新安装即可。
我卸载了 mysql,重新安装了 mysql 并运行:
sudo -u _mysql mysql_install_db5 /opt/local/share/mysql5/mysql/mysql.server start
一切正常,但是要求mysqladmin5 -u root -p ping
我输入密码并且mysqladmin5 -u root ping
不起作用。
答案1
问题是我没有 root 用户来重置密码来修复: Shell:
/opt/local/share/mysql5/mysql/mysql.server 停止 /opt/local/share/mysql5/mysql/mysql.server 启动 --skip-grant-tables
mysql:
用户mysql; 插入用户(主机、用户、密码)值('localhost'、'root'、''); 更新用户集Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y'其中用户='root'; 出口;
壳:
/opt/local/share/mysql5/mysql/mysql.server 停止 /opt/local/share/mysql5/mysql/mysql.server 启动 mysql -u 根目录
mysql:
使用授权选项将 *.* 上的所有权限授予 'root'@'localhost';
更多信息请点击这里: http://helpfromfriend.com/database/mysql/how-to-recreate-root-account-in-mysql/
答案2
来自 dev.mysql.com/doc/refman/5.1/en/default-privileges.html:
mysql.user 授权表定义了初始 MySQL 用户帐户及其访问权限:
有些帐户的用户名是 root。这些是超级用户帐户,拥有所有权限,可以执行任何操作。 初始 root 账户密码为空,因此任何人都可以以 root 身份连接到 MySQL 服务器而无需密码,并被授予所有权限。
重置 root 密码的说明如下:找到这里。
答案3
如果您停止 mysqld,并从命令行使用该--skip-grant-tables
选项启动它,您将能够以 root 身份登录而无需密码。然后您可以将 root 密码设置为您能记住的密码。
USE mysql;
UPDATE user SET `password` = PASSWORD('your new password') WHERE user = 'root';
FLUSH PRIVILEGES;
但是,完成此操作后,请确保停止 mysqld 并正常重新启动它,以便客户端再次检查其密码。
答案4
似乎对于存在此问题的较新安装的 MySQL,此方法不再有效。请参阅 Dave 于 2018 年对http://www.helpfromfriend.com/database/mysql/how-to-recreate-root-account-in-mysql/说:“这在 mysql 5.7.17 上不起作用,非常令人沮丧,因为这个和许多其他人跳过了授权表”。这指的是与此处显示的程序类似的程序。