2012-11-20 202 views
8

我剛剛得到了一個新的MacBook Pro(OS X 10.8.2),並試圖讓它設置mysql。到目前爲止,我已經能夠安裝它,但我無法獲得我的root用戶訪問權限(或任何用戶)。我打算在Python上使用這個,在我的另一臺電腦上我只使用MYSQL(沒有MAMP),我更喜歡這樣。訪問被拒絕MYSQL錯誤1045

僅供參考,我做了以下內容:

$ alias mysql=/usr/local/mysql/bin/mysql $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start $ alias mysqladmin=/usr/local/mysql/bin/mysqladmin

當我進入mysqlmysql -u root -p它給了我這樣的:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'jmitch'@'localhost' (using password: NO) 根據其中ph我正在使用

MYSQL正在我的系統首選項中運行。感謝您的幫助。

+0

http://www.howtoforge.com/reset-forgotten-mysql-root-password – Drew

回答

21

也許正在更新包,更新程序覆蓋了根密碼。

恢復它:

停止mysqld deamons。

$ sudo service mysqld stop 

進入到mysql/bin目錄

$ cd /usr/bin 

開始一個MySQL守護進程使用此選項:

$ sudo mysqld_safe --skip-grant-tables 

打開另一個終端,然後打開一個mysql會話執行此:

$ mysql 

mysql> use mysql; 

see Note1 below for next line. 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 

mysql> exit; 

現在殺死該mysqld_safe的過程和重啓mysqld正常:

$ sudo service mysqld start 

注1:password是在表mysql.user 5.7版本之前的列名。之後它變成了authentication_string。相應地更改您的更新聲明。

+12

'$ sudo service mysql stop'返回'sudo:service:command not found' – jmitchel3

+0

在sudo中運行守護程序mysqld_safe --skip -grant-tables模式可能不是真的需要,我試過沒有它,並仍然解決了我的問題(這是在mac 10.9) – Basav

+0

這對我OS X小牛10.9後有很多訪問被拒絕時鍵入'mysql -u root -p',謝謝! – raunay

2

我有一個類似的問題試圖通過山獅終端訪問MAMP的MySQL。

--no-defaults標誌爲我解決了它。

/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost 
5

在Mac OSX 10.9小牛我在support-files目錄,而不是mysqld_safe的服務腳本中使用的 'mysql.server的' 腳本。

$sudo ./mysql.server stop 
$sudo ./mysql.server start --skip-grant-tables 
$ mysql 
mysql> use mysql; 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 
mysql> exit; 
$sudo ./mysql.server stop 
$sudo ./mysql.server start 
+0

我沒有任何名爲'mysql'的數據庫,我有兩個數據庫:'information_schema'和'test'。我通過這個命令連接了:'mysql -h127.0.0.1',通過'mysql'我得到了這個錯誤:'ERROR 2002(HY000):無法通過套接字'/ tmp/mysql連接到本地MySQL服務器。 sock'(2)' – Saurabh

1

我想補充一點,對於MySQL 5.7,只需更改authentication_string列不起作用。這是因爲MySQL從未實際使用這些值進行根認證,它使用插件。據我可以告訴這個插件驗證你也是根主機帳戶(所以你必須sudo mysql -u root)。

我能得到這個工作的唯一方法是運行以下命令:

UPDATE mysql.user 
SET authentication_string=PASSWORD(''), plugin='' 
WHERE mysql.user = 'root'; 

還應當指出的是,5.7的官方MySQL文檔從來沒有提到這一點。按照這封信的文件,你無處可去。

+0

我在OS X 10.12.3上運行5.7 *,不能再使用'mysql stop/start'別名,得到問題的錯誤。你的上面的答案看起來很有希望,但給出:'錯誤1054(42S22):'where子句'中的未知列'mysql.user'? –

相關問題