Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Can';t通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock';(2) Ubuntu_Mysql_Linux_Sockets_Ubuntu_Docker - Fatal编程技术网

Docker Can';t通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock';(2) Ubuntu

Docker Can';t通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock';(2) Ubuntu,mysql,linux,sockets,ubuntu,docker,Mysql,Linux,Sockets,Ubuntu,Docker,我在玩docker,将我的本地mysql安装到docker容器中,并连接mysql Workbench,以便查看DB(正在试验),这是我运行的命令 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(本地安装)。当我运行

我在玩docker,将我的本地mysql安装到docker容器中,并连接mysql Workbench,以便查看DB(正在试验),这是我运行的命令

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!
ls: cannot open directory '/var/lib/mysql': Permission denied
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
所以我检查了
systemctl状态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]: 
我还尝试使用我的详细信息登录mysql:
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)
当我在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
,它将返回

[....] 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!
ls: cannot open directory '/var/lib/mysql': Permission denied
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
并使用sudo
sudols-la/var/lib/mysql运行相同的命令
它返回

[....] 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!
ls: cannot open directory '/var/lib/mysql': Permission denied
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服务器吗?

最简单、最简单的解决方法是什么?

非常感谢你的帮助

更新了修复程序

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

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)
[ok]启动mysql(通过systemctl):mysql.service.


G

需要更多信息。但我想到两件事

  • 这可能是许可问题。根据您的输出,为什么不首先尝试将所有者和组更改回mysql?这应该是一个简单的
    sudochown-rMySQL:mysql/var/lib/mysql
  • 运行
    mysql:latest
    image可能是您在本地运行的不同版本的mysql,它可能已将mysql数据升级为与旧版本不兼容的新格式。检查您在本地运行的MySQL版本是否与
    MySQL:latest
    image标记指向的版本相同(至少与次要版本相同,如5.6和5.6)

  • mysql的最新版本是什么?您在本地运行的是什么版本?您启动的MySQL容器是否有任何日志输出?

    需要更多信息。但我想到两件事

  • 这可能是许可问题。根据您的输出,为什么不首先尝试将所有者和组更改回mysql?这应该是一个简单的
    sudochown-rMySQL:mysql/var/lib/mysql
  • 运行
    mysql:latest
    image可能是您在本地运行的不同版本的mysql,它可能已将mysql数据升级为与旧版本不兼容的新格式。检查您在本地运行的MySQL版本是否与
    MySQL:latest
    image标记指向的版本相同(至少与次要版本相同,如5.6和5.6)

  • mysql的最新版本是什么?您在本地运行的是什么版本?您启动的MySQL容器有日志输出吗?

    没有日志输出,但我的第一个想法是按照您在第一点中所说的做。我刚刚运行了
    sudo chown-R mysql:mysql/var/lib/mysql
    ,然后尝试启动mysql
    sudo/etc/init.d/mysql start
    ,结果成功了<代码>[确定]启动mysql(通过systemctl):mysql.service。感谢您的快速响应@AndyNo日志输出,但我的第一个想法是按照您在第一点中所说的做。我刚刚运行了
    sudo chown-R mysql:mysql/var/lib/mysql
    ,然后尝试启动mysql
    sudo/etc/init.d/mysql start
    ,结果成功了<代码>[确定]启动mysql(通过systemctl):mysql.service。感谢您的快速响应@Andy