1、下载最新版的mysql镜像
docker pull mysql:latest
2、启动mysql
docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
如果需要挂载目录
#新建conf 挂载目录
mkdir -p docker_v/mysql/conf
#在conf目录下新建my.cnf
touch my.cnf
#启动mysql
docker run -p 3306:3306 --name mysql -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql --restart=always
备注
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v /opt/docker_v/mysql/conf:/etc/mysql/conf.d:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
-d: 后台运行容器
--restart=always 设置容器开机自启
3、进入到数据库命令行模式
mysql -u root -p
4、创建新用户
CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test';
5、创建数据库
create database test;
处理 navicat 连不上数据库 Host is not allowed to connect to this MySQL server
mysql -u root -p
alter user 'root'@'%' identified by 'password' password expire never;
alter user 'root'@'%' identified with mysql_native_password by 'password';
flush privileges
处理新建用户没权限操作数据库,版本不同,命令不一样,以下为8.0.25版本
1、进入到数据库命令行模式
mysql -u root -p
2、创建用户
create user 'test'@'%' identified by 'password';
3、赋予权限
with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
指定数据库给tes用户授权
grant all privileges on 想授权的数据库.* to 'test'@'%' with grant option;
#给tset用户授予所有数据库权限
grant all privileges on *.* to 'test'@'%' with grant option;
如果权限要分的细一点all 换成 select,delete,update,create,drop,需要什么权限给什么权限
有些版本'%'不包括localhost,要单独对@'localhost'进行赋值
grant select,insert,update,delete on *.* to test@"localhost" Identified by "testpassword";
4、刷新配置
flush privileges;
5、修改mysql root账号密码
update mysql.user set authentication_string='新密码' where user='root';