Linux

無效的伺服器主機名綁定地址導致對 mysql 的訪問被拒絕

  • December 13, 2012

我無法使用終端登錄 mysql。

[root@fst mysql]# mysql -h localhost -u admin -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)

我確定我的密碼正確。當我檢查狀態時,mysql也在執行。mysql 數據庫也存在於目錄 /var/lib/mysql/ 中。存在主機 host.myi、host.myd 和 host.frm。

順便說一句,這與我之前的問題MySQL 伺服器退出而不更新 PID 文件有關。最初,當根目錄已滿時會出現問題。為了能夠登錄到directadmin並啟動mysql,我將/var/lib/mysql/的軟連結添加到/home/mysql。由於我的數據庫用盡了大部分根目錄。根目錄有 50Gb,/home 有 1.5Gb。不知何故 /var/lib/mysql/idbdata1 已損壞。所以我把它移到另一個位置。

現在,我可以啟動 mysql 伺服器,但無法登錄。

以下是來自 mysql 日誌的內容。

121212 20:44:10 mysqld_safe mysqld from pid file /var/lib/mysql/fst.srv.net.pid ended
121212 20:44:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
121212 20:44:10 [Note] Plugin 'FEDERATED' is disabled.
121212 20:44:10 InnoDB: The InnoDB memory heap is disabled
121212 20:44:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
121212 20:44:10 InnoDB: Compressed tables use zlib 1.2.3
121212 20:44:10 InnoDB: Using Linux native AIO
121212 20:44:10 InnoDB: Initializing buffer pool, size = 128.0M
121212 20:44:10 InnoDB: Completed initialization of buffer pool
121212 20:44:10 InnoDB: highest supported file format is Barracuda.
121212 20:44:11  InnoDB: Waiting for the background threads to start
121212 20:44:12 InnoDB: 1.1.8 started; log sequence number 1595675
121212 20:44:12 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
121212 20:44:12 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
121212 20:44:12 [Note] Server socket created on IP: '0.0.0.0'.
121212 20:44:12 [Note] Event Scheduler: Loaded 0 events
121212 20:44:12 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.27-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

我猜綁定地址有問題。我應該如何解決這個問題?

只需重置您的密碼並確保您的使用者名和主機規範在mysql.user表中正確 - “訪問被拒絕”錯誤意味著您正在訪問偵聽器,因此您的綁定地址不是問題。

添加skip-grant-tables到您my.cnf的服務並重新啟動服務,然後查看mysql.user表格並根據需要更改主機和密碼 - 確保在skip-grant-tables完成後退出配置。

引用自:https://serverfault.com/questions/457650