基本操作
拉取镜像
docker pull mysql/mysql-server:5.7
启动镜像
docker run --name=mysql1 -d -p {port}:3306 mysql/mysql-server:5.7
创建一个用于持久化的工作目录
mkdir /home/mysqltest
创建数据文件夹
cd /home/mysqltest && mkdir datadir
将镜像内部的配置文件拷贝到宿主机
docker cp mysql1:/etc/my.cnf .
停止并删除镜像
docker stop mysql1 && docker rm mysql1
启动镜像,并指定挂载的配置文件和数据目录
docker run --name=mysql1 \
--mount type=bind,src=/home/mysqltest/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/home/mysqltest/datadir,dst=/var/lib/mysql \
-d -p {port}:3306 mysql/mysql-server:5.7
查看初始化root密码,如果没数据的话,过几秒再执行一下该命令
docker logs mysql1 2>&1 | grep GENERATED
本地登录
docker exec -it mysql1 mysql -uroot -p
修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'
新建账号
CREATE USER 'username'@'%' IDENTIFIED BY 'password'
为新账号设置所有权限(除GRANT权限)
GRANT ALL ON *.* TO 'username'@'%'
连接测试
在另一台机器上连接mysql
mysql -h{ip} -P{port} -u{username} -p
开启binlog(可选)
my.cnf增加以下配置
server-id=1
log-bin=binlogtest
然后重启mysql服务器
docker restart mysql1
连接到mysql后,确认binlog已经开启
show variables like 'log_bin'
Mysql5.6安装
其他和Mysql5.7相同,除了修改密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password')