安装、运行

需要特别注意-v挂载到本机的目录的权限问题,否则报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

sudo docker run --name=mysql -it -p 3306:3306 -v /home/zxl/workspace/docker/mysql/mysqld:/var/run/mysqld -v /home/zxl/workspace/docker/mysql/db:/var/lib/mysql -v /home/zxl/workspace/docker/mysql/conf.d:/etc/mysql/conf.d -v /home/zxl/workspace/docker/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d zhangxueliang2020/mysql:v5.7.26

常见报错解决方案

Ubuntu使用docker安装完mysql后登录时会遇到如下错误

root1@ubuntu:~$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
  • 上面错误提示没有mysqld.sock文件,然后在网上找了许多文章说要配置/etc/mysql/mysql.conf.d目录下的mysqld.cnf文件,然而我改了半天也没有用最后看到一篇文章才把问题解决掉的如下:
1、先创建好mysql容器
sudo docker run -p 3306:3306 --name mysql   -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
2、进入容器
sudo docker exec -it mysql /bin/bash
3、登陆容器内数据库
mysql -u root -p 设置的密码

本地宿主机通过mysql命令连接mysql Docker容器中的服务器报错 ERROR 2002 (HY000)

1、具体所错与下所示:

[user@cluster2 ~]$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

2、根据报错提示,是本地mysql连接服务器时,没有找到/var/lib/mysql/mysql.sock文件。那么从这入手,我们看到mysql容器中的服务器启动后的mysql.sock文件在哪。

我们进入mysql容器中看看:

sudo docker exec -it mysql /bin/bash
查看mysql配置文件my.cnfroot@9e313681fc3e:/# cat /etc/mysql/my.cnf
我们看到下面的一些配置:[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

这里可以看到mysqld.sock的目录是在/var/run/mysqld目录下,但是这个目录,我们并没有挂载主机目录,下面我们重新运行mysql容器,挂载相应的容器,如下所示:

sudo docker run --name=mysql -it -p 3306:3306 -v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/db:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d -v /opt/data/mysql/files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql

使用以上命令运行mysql容器,这里使用/opt/data/mysql中的相关目录挂载到mysql容器中,启动容器之后你会发现mysql服务器无法正常启动,报错如下:

2018-12-29T06:25:09.480604Z 0 [ERROR] [MY-010273] [Server] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2018-12-29T06:25:09.480619Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
2018-12-29T06:25:09.480625Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-29T06:25:11.289786Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.13)  MySQL Community Server - GPL.
[user@cluster2 mysql]$ sudo docker logs mysql
2018-12-29T06:25:09.095301Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2018-12-29T06:25:09.095434Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.13) starting as process 1
2018-12-29T06:25:09.478963Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-12-29T06:25:09.480604Z 0 [ERROR] [MY-010273] [Server] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2018-12-29T06:25:09.480619Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
2018-12-29T06:25:09.480625Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-29T06:25:11.289786Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.13)  MySQL Community Server - GPL.

说是无法创建:Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock。这说明本地的/opt/data/mysql/mysqld目录,mysql容器中无权限防问。

注意:这里的/opt/data/mysql目录下的所示目录都是mysql容器启动时自动创建的,这里只有db目录的用户和组是:polkitd input,其它的就是root root,因此,我们要将其它几个目录的用户和组都改成polkitd input。命令如下:

cd /opt/data
sudo chown -R polkitd:input mysql

这样,删除mysql docker 容器。重新创建:

sudo docker rm mysql
sudo docker run --name=mysql -it -p 3306:3306 -v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/db:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d -v /opt/data/mysql/files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql

这样容器中的mysql就能正常运行了。

3、本地主机连接容器的mysql时,需要查到 /var/lib/mysql/mysql.sock。我们启动mysql容器后,在/opt/data/mysql/mysqld目录下有一个mysqld.sock。我们要把这个文件链接到本地主机的var/lib/myql目录中。

sudo ln -s /opt/data/mysql/mysqld/mysqld.sock /var/lib/mysql/mysql.sock
这样在运行mysql -uroot -p输入密码就能正常连接,docker容器中的mysql服务了。

4、本地主机只需要安装mysql-community-client包就可以了。

docker --privileged=true 参数作用

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

$ docker help run
...
--privileged=false         Give extended privileges to this container
...

这里以一个Mysql 例子

我们启动命令还没加 --privileged=true 参数 ,可以明确看到docker 尝试去运行容器,但是马上就关闭了。

命令

docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=123456 -p 9092:3306  -d daocloud.io/library/mysql:5.7.6

尝试使用一些命令,提示permission denied,权限禁止

加入参数命令后

docker run --name mysql-test --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -p 9092:3306  -d daocloud.io/library/mysql:5.7.6

成功运行命令

docker安装mysql及相关配置、运行细节和常见报错解决方案相关推荐

  1. Windows下载安装MySQL及相关配置教程

    Windows下载安装MySQL及相关配置教程 下载过程: 1.首先登陆官方网站进行下载:[https://dev.mysql.com/downloads/mysql/] 2.如图所示:step1:选 ...

  2. 配置hadoop集群常见报错汇总

    配置hadoop集群常见报错汇总 1.使用hdfs namenode -format 格式化报错找不到JAVAHOME 该问题只需在对应的窗口导入JAVAHOME即可,注意,此处为对应环境安装的JDK ...

  3. mysql安装ZIP存档什么意思_关于MySQLzip安装常见报错解决方案!

    首先,zip安装需要64位的系统,自己看电脑是不是32位的. 然后你的路径不要有中文,不要有中文,不要有中文!!! 名字也不要不要带空格,不要带空格,不要带空格!!!计算机会把空格前的名字默认为一个目 ...

  4. mysql starting server 失败_安装MySQL过程中(最后starting server)报错解决方案

    错误显示: 点击取消,直至安装结束后,去C:\ProgramData\MySQL\MySQL Server 5.6\data下面的.err文件看看,用记事本打开,内容是否类似于: 150318 10: ...

  5. selenium firefox驱动_Python3+selenium配置常见报错解决方案

    第一个报错问题 'geckodriver' executable needs to be in PATH 1.1如果启动浏览器过程中报如下错误: Traceback (most recent call ...

  6. python3 selenium ie 拒绝连接报错_Python3+selenium配置常见报错解决方案

    第一个坑:'geckodriver' executable needs to be in PATH 1.如果启动浏览器过程中报如下错误 Traceback (most recent call last ...

  7. trinity运行原理及常见报错(一)

    trinity运行过程 1.检测所用软件及输入文件 1)检测输入文件是否正确 Left read files: $VAR1 = [           '/lustre/02.work/wanglih ...

  8. trinity运行原理及常见报错(四)

    6.运行butterfly Butterfly consists of two parts. 分为两步: 第一步:graph simplification During the first part, ...

  9. trinity运行原理及常见报错(二)

    4.运行Inchworm Linear contig construction from k-mers Inchworm: 将RNA-seq的原始reads数据逐碱基打成kmer,根据kmer之间的重 ...

最新文章

  1. python中用来回溯异常的模块_为什么Python线缓存会影响回溯模块而不影响...
  2. iis7.5支持html5,IIS7.5 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面...
  3. 【迁移学习(Transfer L)全面指南】2021年迁移学习发展现状及案例探究
  4. Sentinel隔离和降级
  5. oracle12c ora 12547,Oracle 12c DBCA出现PRCR-1079 ORA-12547 CRS-5017
  6. HDU1026 Ignatius and the Princess I(深度优先搜索)
  7. canvas游戏篇 - 贪吃蛇
  8. 谁能真正“撬动”微信?| 畅言
  9. 智能家居火了这么久 何时到我家?
  10. show tables mysql_MySQL_解析MYSQL显示表信息的方法,在用mysql时(show tables),有时候 - phpStudy...
  11. 微宝球型机器人功能_《宇宙机器人 无线控制器使用指南》评测:与次世代的美好初恋...
  12. 如何将python转换成exe执行
  13. 北京邮电大学计算机科学与技术专业研究生,北京邮电大学计算机科学与技术专业...
  14. 1000瓶药水,其中1瓶有毒,最少要几只老鼠?
  15. java web 怎么实现直播_java web开发直播平台可以实现但有缺陷
  16. Centos 7.4 防火墙关闭命令
  17. 需求与商业模式创新-需求3-需求工程过程
  18. 交互媒体专题设计------《The Wiley Handbook of Human Computer Interaction》
  19. Multi-task learning of facial landmarks and attributes with Tensorflow(一)
  20. 英伟达Isaac介绍

热门文章

  1. wxWidgets随笔(10)-wxApp类
  2. GitHub标星14k:超详细的人工智能专家路线图
  3. 【Python】挑战SQL:图解Pandas的数据合并merge
  4. 【数据竞赛】大规模数据调参用这个包就可以啦。
  5. 读不完的顶会Paper,我该如何读论文?
  6. Android 网络编程系列(3)WebView 详解
  7. 软件工程第三次作业-功能测试
  8. 不一致的国际数据隐私法
  9. jsp中的内置对象(9个)、作用
  10. Java基础复习笔记系列 九 网络编程