docker上面搭建mysql容器:2019-01-12

			docker上搭建部署java web运行环境(centos 7.5)

一:docker上构建mysql容器并将配置文件以及数据库文件映射到宿主机
1:首先拉去mysql镜像文件
docker pull mysql
或者docker search mysql 通过搜索镜像选择星级高的官方mysql镜像下载
2:构建mysql容器
在centos 7.5宿主机创建响应的目录和文件
mkdir data
mkdir config 【data子目录】 touch my.conf 【创建配置文件】
mkdif mysql 【data子目录】

vim my.conf 编辑配置文件并设置mysql字符集
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

执行docker命令构建mysql容器
docker run -d -p 3306:3306
–restart always
–privileged=true
–name mysql001
-e MYSQL_USER=“mysql”
-e MYSQL_ROOT_PASSWORD=“123456”
-e MYSQL_PASSWORD=“123456”
-e MYSQL_ROOT_PASSWORD=“123456”
-v=/data/config/my.cnf:/etc/my.cnf
-v=/data/mysql:/var/lib/mysql
mysql

参数说明
–restart always:开机启动
–privileged=true:提升容器内权限
-v=/data/config/my.cnf:/etc/my.cnf:映射配置文件
-v=/data/mysql:/var/lib/mysql:映射数据目录
mysql 容器名称

注意如果不设置root用户密码的话,mysql初始化会失败
MYSQL_ROOT_PASSWORD

(1):mysql 首次登陆修改 root 用户密码
mysql 8.0之前
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;
mysql> flush privileges;

mysql 8.0之后
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;

(2):mysql 8.0开放远程连接
查看root用户允许访问权限
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;

创建一个用户(跟mysql 5.*不同,这里必须要新创建用户)
create user ‘root’@’%’ identified with mysql_native_password by ‘123456’;

授权
grant all privileges on . to ‘root’@’%’ with grant option;

刷新权限
mysql> flush privileges;

删除root@localhost用户:
drop user ‘root’@’localhost’;

刷新权限:
flush privileges;

完成以上步骤,mysql的root用户就开启了远程访问权限

如果没有添加–privileged=true参数,容器创建后不能正常启动,查看日志发现有权限的错误

总结和思考
1、不只是MySql,应该是所有涉及到数据和配置的,都不应该放在容器内部。
2、使用-v参数挂接外部数据时,如果data目录已经存在,容器能正常启动吗?
3、在docker run命令中添加镜像参数和直接在my.cnf中设置有什么区别?

centos7.5相关命令:
1:查看防火墙状态:systemctl status firewalld
2:开启防火墙:systemctl start firewalld
3:关闭防火墙:systemctl stop firewalld
4:查看端口是否已开放:firewall-cmd --query-port=80/tcp
6:开永久端口号:firewall-cmd --add-port=3306/tcp --permanent
7:重新载入配置:firewall-cmd --reload
8:移除端口:firewall-cmd --permanent --remove-port=3306/tcp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值