最近換了一臺新的主機,需要將之前的MySQL數據庫遷移到新主機上,但是連接出現了問題,嘗試了各種方法仍然無法連接上。
$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
這是一個比較常見的錯誤,通常表示無法通過套接字連接到MySQL服務器。首先需要確認MySQL是否已經開啟服務。
$ sudo service mysql status * mysql is not running
可以看到MySQL服務沒有開啟,需要手動啟動服務。
$ sudo service mysql start
再次嘗試連接數據庫,發現仍然無法連接,查看錯誤日志。
$ tail -f /var/log/mysql/error.log 2020-05-06T03:52:37.610439Z 0 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use 2020-05-06T03:52:37.610460Z 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?
可以看到端口3306被占用,需要關閉占用該端口的進程或者修改MySQL使用的端口。
$ sudo lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 18135 mysql 20u IPv4 819613 0t0 TCP *:mysql (LISTEN) $ sudo service mysql stop $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 修改端口號 port = 3307 $ sudo service mysql start
再次嘗試連接數據庫,成功連接。
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 41 Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu) mysql>
總結:
- 確認MySQL服務是否開啟;
- 查看錯誤日志,解決錯誤;
- 關閉占用端口的進程或修改MySQL使用的端口。
下一篇mysql按鍵連接