在macports中重置mysql5 root密码

Posted

技术标签:

【中文标题】在macports中重置mysql5 root密码【英文标题】:Reset mysql5 root password in macports 【发布时间】:2011-09-09 06:32:50 【问题描述】:

我刚刚在 Snow Leopard 上通过 macports 1.9.2 安装了 macports。现在我不能使用mysql,因为我好像不知道密码。

$ sudo mysql5 -u root -p 
Enter password:  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我不确定这是否是安装或使用中的一些错误,或者我只是忘记了密码,但我认为我需要重置密码。怎么做?

更新:我可以启动和停止我的 MySql 服务器,所以它不应该被破坏,但我没有像 $ sudo /opt/local/lib/mysql5/bin/mysqld_safe5 这样的命令。

$ ls /opt/local/lib/mysql5/bin/
innochecksum            mysql_client_test       mysql_secure_installation   mysqlbinlog         mysqlimport         ndb_drop_index          ndb_select_all          resolve_stack_dump
msql2mysql          mysql_client_test_embedded  mysql_setpermission     mysqlbug            mysqlshow           ndb_drop_table          ndb_select_count        resolveip
my_print_defaults       mysql_config            mysql_tzinfo_to_sql     mysqlcheck          mysqlslap           ndb_error_reporter      ndb_show_tables
myisam_ftdump           mysql_convert_table_format  mysql_upgrade           mysqld_multi            mysqltest           ndb_mgm             ndb_size.pl
myisamchk           mysql_find_rows         mysql_waitpid           mysqld_safe         mysqltest_embedded      ndb_print_backup_file       ndb_test_platform
myisamlog           mysql_fix_extensions        mysql_zap           mysqldump           ndb_config          ndb_print_schema_file       ndb_waiter
myisampack          mysql_fix_privilege_tables  mysqlaccess         mysqldumpslow           ndb_delete_all          ndb_print_sys_file      perror
mysql               mysql_install_db        mysqladmin          mysqlhotcopy            ndb_desc            ndb_restore         replace

【问题讨论】:

检查我的答案:用 mysqld_safe 替换 mysqld_safe5 我的安装有问题:mysql> update user set Password=PASSWORD('new-password') WHERE User='root';查询正常,0 行受影响(0.03 秒)匹配行:0 更改:0 警告:0 如果我尝试手动创建 root,它说我不能使用 skip-grant-tables... 重新安装? 【参考方案1】:

首先,您需要确保您的数据库已停止:

$ sudo /opt/local/share/mysql5/mysql/mysql.server stop 

现在您应该通过 mysqld_safe 命令在后台启动数据库:

$ sudo /opt/local/lib/mysql5/bin/mysqld_safe --skip-grant-tables &

现在服务器正在使用 --skip-grant-tables 标志运行,您无需密码即可连接到它并完成工作:

 $ sudo mysql5 --user=root mysql
 Enter password:

 mysql> update user set Password=PASSWORD('new-password-here') WHERE User='root';
 Query OK, 2 rows affected (0.04 sec)
 Rows matched: 2  Changed: 2  Warnings: 0

 mysql> flush privileges;
 Query OK, 0 rows affected (0.02 sec)

 mysql> exit
 Bye

现在您已经完成了,您只需要停止服务器,这样您就可以返回运行具有密码限制的安全 MySQL 服务器。首先通过键入“fg”将您启动的服务器置于前台,然后按“Ctrl+c”将其终止。

这将允许您启动服务器:

$ sudo /opt/local/share/mysql5/mysql/mysql.server start

【讨论】:

感谢您的回答。不幸的是,我没有这个命令,详情请查看原始问题。 @mimrock - 你有mysqld_safe【参考方案2】:

我遇到了同样的问题。尝试重置密码时(如 develroot 建议的那样),我还得到了:

Rows matched: 0 Changed: 0 Warnings: 0

所以从一开始就没有创建过 root 用户。除了 develroot 的回答,我还采取了以下步骤:

flush privileges;
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
GRANT ALL ON *.* TO 'root'@'localhost'

【讨论】:

安装 macports 后我也遇到了这种情况。您的解决方案修复了它。谢谢 大声笑这也发生在我身上,这就是可怕的问题 - there are no users at all in there!!【参考方案3】:

这是我的解决办法。

运行后:sudo -u mysql mysql_install_db5

我收到了这个错误:

ERROR: 1004  Can't create file '/var/tmp/#sql180bd_1_0.frm' (errno: 9)
121221  2:06:21 [ERROR] Aborting

和之前的报告一样,我的 users 表是空的 --- 所有的 mysql 表都是 emtpy

最终,我想出了这样做:

    在安全模式下运行 mysqld。

    sudo /opt/local/bin/mysqld_safe5 --skip-grant-tables &

    登录并删除损坏的mysql数据库

    $ mysql5 $ mysql> 删除表 mysql;

    将 mysql_install_db5 重新运行为 ROOT 而不是 mysql,这样它至少可以完成工作

    $ sudo -u root mysql_install_db5

    然后返回并根据需要将 /opt/local/var/db/mysql5 中的所有内容 chown -R 到 mysql:mysql。

    $ sudo chown -R mysql:mysql /opt/local/var/db/mysql5/ $ sudo chown -R mysql:mysql /opt/local/var/run/mysql5/ $ sudo chown -R mysql:mysql /opt/local/var/log/mysql5/

    之后一切正常,谢谢。

【讨论】:

以上是关于在macports中重置mysql5 root密码的主要内容,如果未能解决你的问题,请参考以下文章

mac mysql5.7重置root密码

Mac EI 10.11.3 MySQL5.7.11 .dmg 安装(便捷设置,密码重置,卸载)

重置MySQL 5.6中的ROOT密码

windows下重置mysql的root密码方法介绍(转)

雪豹下Macports mysql5设置

centos 7 + mysql 5.7.13 重置数据库的root密码