Linux Ubuntu docker安装使用MySQL

环境

Ubuntu 21.04
docker 20.10.7
mysql 8.0.25

一、下载MySQL镜像

大家先在官网查找镜像:https://hub.docker.com/_/mysql
拉取最新镜像命令

docker pull mysql

二、运行容器

如果大家不挂载卷话,运行起来很简单:

sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

--name mysql:是容器名称
-p 3306:3306:容器内部到主机的端口映射
-e MYSQL_ROOT_PASSWORD=123456:是环境变量,即mysql里root用户的密码
-d mysql:后台运行容器

三、使用命令行操作mysql

想要直接用命令行操作mysql,得先进入容器内部:

sudo docker exec -it mysql /bin/bash

再登录mysql:

mysql -uroot -p123456

然后就可以自由操作mysql了。

mysql> show databases;
mysql> create database test;

退出命令:

mysql> exit

四、在宿主机获取虚拟机ip地址

如果大家是用的虚拟机建的系统并使用docker,然后想要在宿主机连上docker内容器,得先查看下虚拟机系统暴露的ip地址。

ifconfig
ifconfig命令查询.png

ip地址即为红框标识内。

五、MySQL容器挂载卷

非挂载卷的情况下,容器停止了再重启,数据依然是在的,但如果被删除了,则其中数据归零。为了避免这种情况,可以挂载卷到容器外部。
挂载卷的运行容器命令:

sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

左斜杠是换行符,跟命令无关。
-v /usr/local/docker/mysql/conf:/etc/mysql:冒号左侧是系统路径,右侧为容器内路径。
启动后运行正常,但如果想要进入容器内操作mysql,可能会遇到错误:


mysql错误提示.png

翻译:在命令行界面上使用密码可以是不安全的;
这个可以按我第八步的操作尝试一遍。

六、挂载mysql配置文件

这是最让我崩溃的,各种奇怪的问题。
如果想要将mysql的配置文件也进行挂载,这个时候需要我们在配置文件的系统映射路径处手动新建my.cnf。进入此文件进行编辑:

sudo vim my.cnf

编辑内容:

[mysqld]
secure_file_priv=/var/lib/mysql
[mysql]

保存退出即可。
不过也有另一种方法,将未挂载时的容器内的配置文件拷贝到外部:

docker cp mysql:/etc/mysql/my.cnf /usr/local/docker/mysql/conf

然后删除之前的容器,重新创建容器:

sudo docker run --privileged=true -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

--privileged=true:这是提升容器内权限的。
或者使用以下命令创建容器:

sudo docker run --name mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
--mount type=bind,src=/usr/local/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/usr/local/docker/mysql/logs,dst=/var/log/mysql \
--mount type=bind,src=/usr/local/docker/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql

--mount:这也是挂载卷的命令,语法和-v有所不同,可以看看官方的说明:https://docs.docker.com/storage/bind-mounts/
--restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次

七、容器启动成功,但宿主机连接不上

我看容器启动成功,高兴的不行,但到我在宿主机用datagrip连接数据库时,我人傻了……连不上……这个挂载配置文件真的好多问题……
我们先进入容器内部:

docker exec -it mysql /bin/bash
mysql -uroot -p
Enter password: 

我发现我这里密码登录就进不去,是有问题的。但是能无密码进去,就是直接用命令 mysql
然后我用sql看了下用户信息:

mysql> select host,user,plugin,authentication_string from mysql.user;
查看mysql用户信息.png

按网友的说法,plugin非mysql_native_password 则需要修改密码:

mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123';
mysql> flush privileges;
mysql> select host,user,plugin,authentication_string from mysql.user;
修改密码.png

如图显示结果,然后就可以在宿主机连接数据库了。

八、查看容器日志:

如果容器运行后处于停止状态,可以查看下容器内日志,这样可以快速定位问题所在:

sudo docker logs mysql

参考链接:
mysql: [Warning] Using a password on the command line interface can be insecure 解决方法
docker部署mysql8.0启动失败
mysql8通用配置my.cnf文件
Docker安装MySQL 8.0并挂载数据及配置文件
docker部署mysql宿主机连接不上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343