2011-06-06 39 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. 之後一切正常,謝謝。