Skip to main content

1.MySQL 报错汇总

報錯:ERROR 2002 (HY000) Can‘t connect to local MySQL server through socket ‘/tmp/mysql

排障思路复现:

1.第一反應是mysql服務未啓動,檢查服務狀態。結果顯示mysql服務狀態正常。

#查询mysql服务状态
systemctl status mariadb

2.根據報錯信息推測可能是sock文件位置配置錯誤,查看/etc/my.cnf.d/openstack.cnf后,發現沒有配置sock文件參數。

嘗試指定my.cnf中的sock保存位置,重啓mysql服務后,驗證得出此方法無效。

vim my.cnf
#嘗試在mysqld中添加以下參數
socket=/var/lib/mysql/mysql.sock

也尝试过指定sock目录是 /tmp/mysql,验证得出也是无法解决问题。

3.嘗試使用/var/lib/mysql目錄下的mysql.sock連接數據庫。還是無法連接數據庫,此方法無效。

mysql -S /var/lib/mysql/mysql.sock -u username -p

4.嘗試使用tcp連接數據庫。無法連接數據庫,方法無效。

mysql -h127.0.0.1 -uusername -p

5.嘗試google搜索解決方案

解決方案: 为mysql.sock创建链接文件

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

stackoverflow上有關於可能是mysql目錄權限導致報錯的解決方案。

參考鏈接:

【mysql报错】ERROR 2002 (HY000) Can‘t connect to local MySQL server through socket ‘tmpmysql_error 2002 (hy000): can't connect to local mysql s-CSDN博客

macos - ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' - Stack Overflow

报错:initialize specified but the data directory has files in it. Aborting

问题背景:docker compose安装mysql后,mysql直接是exit状态,重启也无法启动。

解决方案:安装mysql时,mysql挂载的目录有文件,mysql取消初始化了,卡在这一步。删除mysql数据目录的文件即可。

可以使用以下命令查看安装日志

docker logs mysql	#mysql是容器名称