赞
踩
前提条件,已安装好了docker。
一、创建主机映射目录,data是存放数据的目录,config是存放配置文件的
mkdir -p /Users/你的实际名称/docker_volume/mysql8/{data,scripts,config}
二、data目录的权限设置
chmod -R 777 /Users/你的实际名称/docker_volume/mysql8/data
三、创建配置文件并输入以下配置
cat>/Users/你的实际名称/docker_volume/mysql8/config/my.cnf<<EOF
[mysqld]
default-authentication-plugin=mysql_native_password
user=mysql
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
EOF
四、创建脚本文件并输入以下SQL代码(给abc这个用户授权)
cat>/Users/你的实际名称/docker_volume/mysql8/scripts/abc.sql<<EOF
grant all privileges on *.* to 'abc'@'%' with grant option;
EOF
五、运行容器
docker run --name=mysql01 \
-e MYSQL_USER="abc" \
-e MYSQL_PASSWORD="abc123" \
-e MYSQL_ROOT_PASSWORD="abc123" \
-v /Users/你的实际名称/docker_volume/mysql8/config/my.cnf:/etc/my.cnf \
-v /Users/你的实际名称/docker_volume/mysql8/data:/var/lib/mysql \
-v /Users/你的实际名称/docker_volume/mysql8/scripts:/docker-entrypoint-initdb.d \
-d -p 3306:3306 mysql:8.0.31
六、其它
报下面的错
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
则清理
rm -rf /Users/你的实际名称/docker_volume/mysql8/data/
rm -rf /var/lib/mysql/*
七、删除不要的用户
docker exec -it mysql01 bash
进入mysql容器
mysql -uroot -p
以root用户登录
use mysql;
select user,host from user;
发现root@%这个可从任意地址访问数据库的用户
删除用户drop user 'root'@'%';
生效flush privileges;
再查询select user,host from user;
退出exit;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。