Docker无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(2)Ubuntu

我正在玩docker,并将我的本地mysql安装到docker容器,并连接MySql-Workbench,以便我可以查看数据库(试验)这里是我跑的命令。

docker run -d --name alldb-mysql -v /var/lib/mysql:/var/lib/mysql -e MYSQL_USER=root -e MYSQL_PASSWORD=password -p 3306:3306 mysql:latest 

我停止了我的容器并将其删除后,我无法启动/重新启动mysql(本地安装)。 当我运行sudo /etc/init.d/mysql start它返回

 [....] Starting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. failed! 

所以我查了systemctl status mysql.service

  mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: activating (start-post) (Result: exit-code) since Mon 2017-04-03 22:26:15 IST; 26s ago Process: 5470 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE) Process: 5465 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 5470 (code=exited, status=1/FAILURE); : 5471 (mysql-systemd-s) Tasks: 2 Memory: 1.6M CPU: 222ms CGroup: /system.slice/mysql.service └─control ├─5471 /bin/bash /usr/share/mysql/mysql-systemd-start post └─6579 sleep 1 Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.980564Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explici Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.980614Z 0 [Warning] Can't create test file /var/lib/mysql/n.lower-test Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.980638Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.17-0ubuntu0.16.04.1) starting as process 5470 . Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.981928Z 0 [Warning] Can't create test file /var/lib/mysql/n.lower-test Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.981936Z 0 [Warning] Can't create test file /var/lib/mysql/n.lower-test Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.982122Z 0 [ERROR] failed to set datadir to /var/lib/mysql/ Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.982142Z 0 [ERROR] Aborting Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.982162Z 0 [Note] Binlog end Apr 03 22:26:15 n mysqld[5470]: 2017-04-03T21:26:15.982213Z 0 [Note] /usr/sbin/mysqld: Shutdown complete Apr 03 22:26:15 n systemd[1]: 

我也试图用我的详细信息loginMySQL: mysql -uroot -ppassword1返回

 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

当我运行以下命令ls -la /var/lib/ | grep mysql ls -la /var/lib/ | grep mysql在它返回的var lib目录下。

 drwx------ 12 root docker 4096 Apr 3 21:17 mysql drwx------ 2 mysql mysql 4096 Feb 23 22:35 mysql-files drwx------ 2 mysql mysql 4096 Feb 23 22:35 mysql-keyring drwxr-xr-x 2 root root 4096 Jan 18 21:45 mysql-upgrade 

从外表上看,我(很好的docker工)弄乱了我在我的mysql目录上的所有权。

如果我运行ls -la /var/lib/mysql它会返回

 ls: cannot open directory '/var/lib/mysql': Permission denied 

并使用sudo sudo ls -la /var/lib/mysql运行相同的命令

 total 188480 drwx------ 12 root docker 4096 Apr 3 21:17 . drwxr-xr-x 80 root root 4096 Mar 29 19:28 .. -rw-r----- 1 guest-okauxv docker 56 Feb 23 22:35 auto.cnf drwxr-x--- 2 guest-okauxv docker 4096 Mar 24 23:51 concretepage -rw-r--r-- 1 guest-okauxv docker 0 Feb 23 22:35 debian-5.7.flag drwxr-x--- 2 guest-okauxv docker 4096 Mar 25 00:10 myfidser drwxr-x--- 2 guest-okauxv docker 4096 Mar 4 00:54 myotherFliDB drwxr-x--- 2 guest-okauxv docker 4096 Mar 1 12:33 testFFAPI -rw-r----- 1 guest-okauxv docker 679 Apr 3 21:16 ib_buffer_pool -rw-r----- 1 guest-okauxv docker 79691776 Apr 3 21:17 ibdata1 -rw-r----- 1 guest-okauxv docker 50331648 Apr 3 21:17 ib_logfile0 -rw-r----- 1 guest-okauxv docker 50331648 Feb 23 22:35 ib_logfile1 -rw-r----- 1 guest-okauxv docker 12582912 Apr 3 21:17 ibtmp1 drwxr-x--- 2 guest-okauxv docker 4096 Feb 23 22:35 mysql drwxr-x--- 2 guest-okauxv docker 4096 Mar 25 16:58 NodeRestDB drwxr-x--- 2 guest-okauxv docker 4096 Feb 23 22:35 performance_schema drwxr-x--- 2 guest-okauxv docker 12288 Feb 23 22:35 sys drwxr-x--- 2 guest-okauxv docker 4096 Mar 29 10:34 testDB drwxr-x--- 2 guest-okauxv docker 4096 Mar 1 11:52 demoDB 

通过这个看起来,我(好的docker工)设法改变了所有在mysql目录中的目录的所有者和组。

我需要做一个完整的MySQL服务器重新安装吗?

什么是最简单,最简单的方法来解决这个问题?

你的帮助将不胜感激。

用FIX更新

正是Andy Shinn所说的第一点,我只是运行sudo chown -R mysql:mysql /var/lib/mysql来更改拥有者并启动mysql,通过运行sudo /etc/init.d/mysql start和mysql返回

[ ok ]Starting mysql (via systemctl): mysql.service.

G

一些更多的信息将需要。 但是有两件事想起来。

  1. 这可能是权限问题。 根据你的输出,为什么你不先试着改变所有者和组返回到mysql ? 这应该是一个简单的sudo chown -R mysql:mysql /var/lib/mysql
  2. 运行mysql:latest image可能是你在本地运行的不同版本的MySQL,它可能已经将MySQL数据升级到可能与旧版本不兼容的更新格式。 检查你在本地运行的MySQL版本是否与mysql:latest image标签指向的版本相同(至less是相同的次要版本,例如5.6和5.6)。

mysql:latest版本是什么mysql:latest版本和你在本地运行的版本是什么? 你有没有从你启动的MySQL容器的日志输出?