如果你在使用 MySQL 時,無法連接到 MySQL 服務器,那么你可能會面臨很多麻煩。下面介紹一些可能會導致無法連接 MySQL 的原因:
1. MySQL 服務器未運行
$ mysql -h localhost -u root -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
如果你看到這樣的錯誤消息,那么可能是因為 MySQL 服務器未運行。你可以使用以下命令來檢查 MySQL 服務器是否正在運行:
$ sudo systemctl status mysql.service
如果 MySQL 服務器未運行,那么你可以使用以下命令來啟動 MySQL 服務器:
$ sudo systemctl start mysql.service
2. MySQL 服務器端口未開放
$ mysql -h localhost -u root -p ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)
如果你看到這樣的錯誤消息,那么可能是因為 MySQL 服務器端口未開放。默認情況下,MySQL 監聽3306端口。你可以使用以下命令來檢查 MySQL 服務器端口是否開放:
$ sudo netstat -anp | grep 3306
如果 MySQL 服務器端口未開放,那么你可以使用以下命令來開放 MySQL 服務器端口:
$ sudo ufw allow mysql
3. MySQL 用戶名或密碼錯誤
$ mysql -h localhost -u notexist -p ERROR 1045 (28000): Access denied for user 'notexist'@'localhost' (using password: YES)
如果你看到這樣的錯誤消息,那么可能是因為 MySQL 用戶名或密碼錯誤。你可以通過以下命令來驗證 MySQL 用戶名和密碼是否正確:
$ mysql -h localhost -u root -p
如果 MySQL 用戶名或密碼錯誤,那么你可以使用以下命令來重置 MySQL 用戶名和密碼:
$ sudo mysql_secure_installation
4. MySQL 連接超時
$ mysql -h localhost -u root -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
如果你看到這樣的錯誤消息,那么可能是因為 MySQL 連接超時。你可以通過以下命令來驗證 MySQL 連接是否正常:
$ mysql -h localhost -u root -p
如果 MySQL 連接超時,那么你可以使用以下命令來調整 MySQL 連接超時時間:
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] connect_timeout = 60
在該文件中,將 connect_timeout 參數設置為所需的值(例如,60秒),然后保存該文件。