2011-06-06 41 views
8

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

$ 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 
+0

检查我的答案是:用mysqld_safe的 – technology 2011-06-06 13:27:46

+0

东西代替mysqld_safe5也不行与我的安装: 的mysql>更新用户设置密码= PASSWORD( '新密码')其中user = '根'; 查询OK,0行受到影响(0.03秒) 行匹配:0:0的警告:0 如果我尝试手动创建的根,它说我不能跳过赠款表... 重新安装? – mimrock 2011-06-06 14:11:12

+1

尝试重新安装。 – technology 2011-06-06 14:18:50

回答

6

我有同样的问题。当试图重置密码(如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' 
+0

这也发生在macports安装后。你的解决方案修复了它谢谢 – 2012-03-07 20:22:10

+0

大声笑这也发生在我身上,那是个怪胎问题 - “里面根本没有用户!!” – holms 2012-07-18 14:29:46

16

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

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

现在你应该启动在后台数据库中,通过mysqld_safe的命令:

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

现在服务器与--skip-赠款表标志运行,您可以连接到它的机智豪特密码并完成作业:

$ 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 
+0

感谢您的回答。不幸的是,我没有这个命令,请查看原始问题以获取详细信息。 – mimrock 2011-06-06 13:19:10

+0

@mimrock - 你有'mysqld_safe'。 – 2011-12-13 17:56:03

2

这是我的修复程序。

运行此之后: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 

同以前的报告中,我的用户表是空的---所有的MySQL表为emtpy

最终,我想通了,要做到这一点:在SA

  1. 运行mysqld的fe模式。

    须藤的/ opt/local/bin目录/ mysqld_safe5 --skip-赠款表&

  2. 登录落破mysql数据库

    $ MYSQL5 $的mysql> DROP TABLE MySQL的;

  3. 所以它至少可以完成这项工作

    $ sudo的 - ü根mysql_install_db5

  4. 然后回去和chown -R在/ opt一切重新运行mysql_install_db5为ROOT,而不是MySQL的/ local/var/db/mysql5到mysql:因为它需要。

    $ sudo的乔敦 - R的MySQL的:MySQL的/选择/本地的/ var/DB/MYSQL5/ $ sudo的乔敦 - R的MySQL的:MySQL的/选择/本地的/ var /运行/ MYSQL5/ $ sudo的乔敦 - R的MySQL的:mysql/opt/local/var/log/mysql5/

  5. 之后一切正常,谢谢。