代码改变世界

docker 安装mysql

2019-02-21 15:58  糯米粥  阅读(955)  评论(0编辑  收藏  举报

通过命令: docker search mysql 搜索mysql,可以发现标记的那两个是官方的

 

也可以在https://hub.docker.com上搜索mysql

网站上面搜索的会有很多配置提示,

 

 

 

右边显示的是pull命令:

 

输入命令: docker pull mysql/mysql-server 

 

也可以直接 docker run 语法,因为当run的时候,docker发现本地没有该镜像,回去该网站上pull

 

最好在创建镜像的时候就指定用户名,密码和字符集,语法:

docker run -d -p 3306:3306 
-e MYSQL_USER="nsky"  #新增用户名 nsky 
-e MYSQL_PASSWORD="password" #nksy的密码
-e MYSQL_ROOT_PASSWORD="password"  #root的密码
--name [Name] [ImageName] #容器名称 镜像名称,就是说以哪个镜像为基础创建容器
--character-set-server=utf8 #字符集
--collation-server=utf8_general_ci #级别

 

根据上面的语法,修改容器名称和镜像名称

docker run -d -p 3306:3306 
-e MYSQL_USER="nsky"
-e MYSQL_PASSWORD="password"
-e MYSQL_ROOT_PASSWORD="password"
--name mysql01 mysql/mysql-server
--character-set-server=utf8
--collation-server=utf8_general_ci

注意,你直接这样复制命令是不行的,因为回车
解决方法:

1:不回车,变成一行

2:在回车后面加入空格右斜杠  \

docker run -d -p 3306:3306 \
-e MYSQL_USER="nsky" \
-e MYSQL_PASSWORD="password" \
-e MYSQL_ROOT_PASSWORD="password" \
--name mysql01 mysql/mysql-server \
--character-set-server=utf8 \
--collation-server=utf8_general_ci 


然后在命令工具里面粘贴,回车,创建成功

docker ps  查看运行的容器,状态显示已经启动

启动中是这样的:

 

进入容器: docker exec -it mysql01 bash 

 

登录mysql : mysql -uroot -p 

使用数据库:

 

查看用户名: select user,host from user; 

 

从可以看到root的host是localhost,说明只能通过localhost登陆,localhost以外的地方就不能连接了。用Navicat可以测试下

 

用nsky可以

 

 

我用nsky登陆的,没有权限使用数据库,用root登陆,给权限命令: GRANT ALL PRIVILEGES ON *.* TO 'nsky'@'%' WITH GRANT OPTION; 

 

可以在创建用户的时候,就让他可以在外部连接: CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456'; 

 

 

查看字符集: show variables like '%char%';

 

查看当前的collation: show variables like 'collation%'; 

 

 

 

 

 

 

但容器一删除,刚这些配置都没有了,所以建议是数据卷volume ,挂载

后期建议用mount ,语法更简单

其实就是容器的文件跟宿主机的一个绑定

 

退出mysql容器,输入exit即可

语法:

#注意:需要先创建/docker/mysql/config/my.cnf文件和/docker/mysql/data文件夹

docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/data:/var/lib/mysql mysql/mysql-server

 

在chentos系统中,要区分是根目录还是root目录

这是root目录,[root@localhost~]

 

这是根目录 [root@localhost /]

 

如果是root目录。那么:-v=/root/mysql/m.cnf

如果是根目录,那么:-v=/mysql/m.cnf

 

 

my.cnf如下

[mysqld]
user=mysql
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

 

[mysqld]
user=mysql
socket=/tmp/mysql.sock
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

确定后,进入容器,修改密码

 

 修改密码语句
mysql5.7版本语法:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
mysql5.7之后版本语法:
ALTER user 'root'@'localhost' IDENTIFIED BY '123456'

 

可以通过命令: docker inspect mysql02 

来看这个容器的一些参数和配置,比如我们配置的资料卷挂载

 

 

 

这样删除容器,在重新创建一个的话的,配置依然存在

当然,你创建容器的时候,-v后面的环境变量绑定必须之前的宿主机的路径

参考:https://shimo.im/docs/anrlYMFEYloN52c8