docker 安装mysql

docker 安装mysql:docker pull mysql/mysql-server
运行容器:

docker run -d -p 3306:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="1234." -e MYSQL_ROOT_PASSWORD="1234." --name mysql mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_general_ci --lower_case_table_names=1

docker 容器 修改mysql密码
1.进入 mysql 容器
docker exec -it mysql /bin/bash
添加vim
yum install vim
登陆mysql:mysql -uroot -p

set password for 'root'@'localhost' = password('1234.');
8.0以上语句为: alter user user() identified by "1234.";

grant all privileges on . to 'test'@'127.0.0.1' identified by '1234.' with grant option;

创建用户:CREATE USER 'test1'@'localhost' IDENTIFIED BY '1234.';
--添加新用户
CREATE USER 'test'@'localhost' IDENTIFIED BY '1234.';
进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)
RENAME USER 'test'@'localhost' TO 'test'@'%';
刷新权限
flush privileges;
此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则
更改加密规则
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '1234.';

更新test用户密码
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '1234.';
flush privileges;
再次刷新权限测试是否可以登陆

启动mysql的时候遇到一个问题: driver failed programming external connectivity on endpoint mysql01
找了半天发现是3306被占用
我的解决办法是
cmd 命令-netstat -ano
找到占用3306的
查看被占用端口对应的PID,输入命令:netstat -aon|findstr "16412",回车,记下最后一位数字,即PID,这里是16412。

PS C:WINDOWSsystem32> netstat -aon|findstr "16412"
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 16412
TCP [::]:3306 [::]:0 LISTENING 16412
PS C:WINDOWSsystem32> a

继续输入tasklist|findstr "16412",回车,查看是哪个进程或者程序占用了2720端口,结果是:docker.ackend.exe
com.docker.backend.exe 16412 Services 0 16,364 K
PS C:WINDOWSsystem32>

最后使用命令结束该进程: taskkill /pid 16412 /f
然后重启docker 启动docker start mysql01 启动成功
docker容器参数启动Mysql (用容器参数添加新用户和修改root账户密码,修改字符集)
docker run -d -p 3306:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="1234." -e MYSQL_ROOT_PASSWORD="1234." --name mysql01 mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_general_ci

mysql 5.7 安装
docker pull mysql:5.7
运行
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1234. -d mysql:5.7 --lower_case_table_names=1
进入mysql cmd
mysql -uroot -p1234.
添加远程链接,修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234.';
flush privileges;

原文地址:https://www.cnblogs.com/liaokui/p/11350841.html