Docker安装并运行mysql5.6数据库

1、在/home目录下新建mysql目录

  mysql目录中新建三个目录:conf目录、logs目录、data目录,建这些目录的目的是用来挂载docker中的mysql下的目录的。

  结果如下:

 

 

 

 

  1.1、然后在conf中写一个mysql的配置文件my.cnf,里面就是配置一些端口号啊、用什么模式啊,内存开多大啊什么的

  配置内容如下:这是我在网上复制过来的,配置内容限制了一些东西,也没使用innodb引擎,根据自己需求配置

port= 3306

character-set-server=utf8

performance_schema_max_table_instances=200

table_definition_cache=200

table_open_cache=128

innodb=OFF

default-storage-engine=MYISAM

default-tmp-storage-engine=MYISAM

loose-innodb-trx=0

loose-innodb-locks=0

loose-innodb-lock-waits=0

loose-innodb-cmp=0

loose-innodb-cmp-per-index=0

loose-innodb-cmp-per-index-reset=0

loose-innodb-cmp-reset=0

loose-innodb-cmpmem=0

loose-innodb-cmpmem-reset=0

loose-innodb-buffer-page=0

loose-innodb-buffer-page-lru=0

loose-innodb-buffer-pool-stats=0

loose-innodb-metrics=0

loose-innodb-ft-default-stopword=0

loose-innodb-ft-inserted=0

loose-innodb-ft-deleted=0

loose-innodb-ft-being-deleted=0

loose-innodb-ft-config=0

loose-innodb-ft-index-cache=0

loose-innodb-ft-index-table=0

loose-innodb-sys-tables=0

loose-innodb-sys-tablestats=0

loose-innodb-sys-indexes=0

loose-innodb-sys-columns=0

loose-innodb-sys-fields=0

loose-innodb-sys-foreign=0

loose-innodb-sys-foreign-cols=0

join_buffer_size = 64M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

 

2、然后使用docker下载mysql镜像,并运行:

  下载mysql5.6版本命令:docker pull mysql:5.6

  查看下载好的mysql5.6数据库:

 

 

 

 

  2.1、运行mysql5.6容器:

docker run -p 3306:3306 --name mysql -v /home/mysql/conf/my.cnf:/etc/mysql/cnf.d -v /home/mysql/logs:/etc/mysql/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
c85b684385002b1ea64c61fe1ba5801d41a1d18afa03bb0c86495addc6cfb614
命令有点长,说下大概什么意思:
docker run -p 3306:3306 --name mysql   意思就是运行mysql容器,指定本机端口3306映射到docker内部的3306端口,--name为起了个别名叫mysql,不起别名的话以后在docker里操作mysql这个容器就只能用容器id来操作

-v /home/mysql/conf/my.cnf:/etc/mysql/cnf.d   表示将之前新建的/home/mysql/conf目录中的my.cnf配置文件挂载到mysql容器里的配置,其实就是替换掉,让容器使用这个配置

-v /home/mysql/logs:/etc/mysql/logs  意思跟上面一个一样,让容器使用/home/mysql/logs这个目录,不用自己默认的

-v /home/mysql/data:/var/lib/mysql  跟上面意思一样

-e MYSQL_ROOT_PASSWORD=123456  初始化root用户密码

-d mysql:5.6   表示此容器后台程序运行

 

  查看docker正在运行的容器:docker ps

  可以看到mysql运行成功:

 

 

  如果没有成功:查看此容器的运行日志:

docker logs 容器Id

 

  报错如下:find: '/var/lib/mysql/': Permission denied,原来是没用文件目录的权限

   解决如下:在端口3306后面加上:--privileged=true,注意挂载目录的路径,我改成了/home/dockerTest/mysql

docker run -p 3306:3306 --privileged=true --name mysql -v /home/dockerTest/mysql/conf/my.cnf:/etc/mysql/cnf.d -v /home/dockerTest/mysql/logs:/etc/mysql/logs -v /home/dockerTest/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

 

 

 

 

 

 

 

 

 

 

  如果路径没有打错的话,有可能会遇到这个报错:我就遇到了,直接运行:yum update  命令后,重新运行mysql容器

 

 

 

 

  

 

3、mysql容器运行成功后,进入数据看看:

进入数据库命令:
docker exec -it c85b68438500 /bin/bash


输入数据库账号密码命令:
mysql -uroot -p


进入数据库后,执行sql代码显示当前所有数据库:注意要加;号按回车
show databases;

 

 

 

 

=====================新加一个修改root密码步骤:

linux进入数据库,使用以下两条命令修改root密码:

1、使用mysql
use mysql;


2、修改root密码为654321
update user set password=passworD("654321") where user = 'root';


3、刷新缓存
flush privileges;


4、退出mysql
exit


然后重进mysql,用修改后的密码登录就ok啦


 

 

 

 测一下连接成功:

 

 

 

 

 ==============数据库安装成功之后,连接数据库=========================

如果用的是本机虚拟机,用数据库操作工具连接不上的话,直接关闭虚拟机的防火墙就行了

 

我用的是阿里云服务器,外网是直接连不上去的,要去配置一下安全组开放3306端口。

很简单自行百度配置阿里云服务器安全组开放端口

 

 

 

 

 

 

 

posted @ 2019-11-09 23:09  下课后我要去放牛  阅读(4233)  评论(0编辑  收藏  举报