1.准备
你得有能正常运行的docker
2.拉取镜像
搜索一下镜像 不搜索也行
docker search mysql
拉取镜像
docker pull mysql:8
拉取指定版本镜像
docker pull mysql:version
查看镜像
docker images
3安装mysql
如果你不需要挂载目录,直接运行
docker run -p 3306:3306 --name mysql --privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8
如果要挂载目录 保存数据到centos
首先创建目录
mkdir /admin/mysql/data
mkdir /admin/mysql/log
mkdir /admin/mysql/conf
#目录可以不建 docker会帮你默认生成
mysql配置 此配置要放在 conf目录下
[client]
#socket = /usr/mysql/mysqld.sock
#默认数据库字符集为utf-8
default-character-set = utf8mb4
[mysqld]
#跳过验证
#skip-grant-tables
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
#服务器字节集设置为utf-8
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
#includedir /etc/mysql/conf.d/
#忽略大小写
lower_case_table_names=1
然后启动mq实例
docker run -d -p 3306:3306 --privileged=true -v /admin/mysql8/log:/var/log/mysql -v /admin/mysql8/data:/var/lib/mysql -v /admin/mysql8/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
-p 端口映射 将docker的3306端口映射到linux的3307
–name mysql-master docker容器实例名 如果不写 会随机生成一个
-v 数据卷挂载
-e mysql环境 设置mysql的密码位123456
-d 后台运行
#查看 mysql是否允许
docker ps
#查询运行日志 用于启动报错解决 docker logs 实例名称或者id
docker logs mysql
4错误解决
如果你安装后发现密码登录不上
#进入docker容器
docker exec -it mysql bash
#mysql登录
mysql -u root -p
#然后输入密码 发现错误
修改配置 添加
#跳过mysql登录验证
skip-grant-tables
然后重新登录 密码直接回车就可以进入
问题:新版 MySQL 授权用户时报错 near 'IDENTIFIED BY '密码' with grant option' at line 1
原因:因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了
解决:
1.添加用户
CREATE USER '用户名' IDENTIFIED BY '密码';
2.赋予权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
3.修改加密规则
ALTER USER '用户名'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
4.更新一下用户密码
ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
5.更新配置信息
FLUSH PRIVILEGES;
进入mysql后
use mysql;
#添加一个远程登录用户
CREATE USER 'admin' IDENTIFIED BY '123456';
#授权
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
#更新一下本地root账户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
#更新配置信息
FLUSH PRIVILEGES;
如果执行命令时提示无权执行
先执行
FLUSH PRIVILEGES;
然后退出容器
ctl + p ;ctl + q
然后去掉跳过验证配置
重启mysql