1.docker创建mysql
sudo docker pull mysql 拉取mysql的镜像
ubuntu 需要加sudo
#-p 23306 :3306 这是 将mysql的3306端口映射到服务器上的23306端口
#--name=stock_v2这个容器的名字
#MYSQL_ROOT_PASSWORD 管理员的 密码
#MYSQL_USER 普通用户的用户名
#MYSQL_PASSWORD普通用户的密码
#MYSQL_DATABASE 数据库名
#mysql:latest 代表最后的版本 可以指定成自己的
#-v /opt/mysql/stock-v2:/var/lib/mysql \
# /opt/mysql/stock-v2 这个目录需要手动创建 服务器上的保存数据的地方 映射 /var/lib/mysql这个目录
docker run -itd --name stock_v2 --restart=always \
-p 23306:3306 \
-e mysqld \
-e MYSQL_ROOT_PASSWORD=xxx\
-e MYSQL_USER=xxx\
-e MYSQL_PASSWORD=xxx\
-e MYSQL_DATABASE=stock_v2 \
-v /opt/mysql/stock-v2:/var/lib/mysql \
-d mysql:latest
2.docker连接创建 mysql服务器
sudo docker exec -it 容器的名字 bash #开启一个伪终端
root@b89d8d8ef148:/# mysql -uroot -p
3.mysql给普通用户授权
select host,user,plugin,authentication_string from mysql.user;
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| % | develop | mysql_native_password | *8D20E4B2CA17D3AAEC1680514E4694C9A19005E5 |
| % | root | caching_sha2_password | $A$005$CTzGT8w5CDBj^._Ot.bvhHPZr6F2Pv9UyumVw7hE2AmjpufACXJo.3YPfu2 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | mysql_native_password | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
6 rows in set (0.00 sec)
.备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
使用navicat连接会抱这个错误 我的root 用户 host不限制ip但是 plugin 是caching_sha2_password 还是会报这个错误
所以还得授权
4.授权步骤
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#这里我就不做演示了
#如果想给xxx用户 就把root替换成xxx 密码随意
ALTER user 'xxx'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#别忘了刷新
FLUSH PRIVILEGES;
#这时在使用Navicat连接就会连接成功
5.我是用的版本是mysql的5.6.35
遇见的问题 由于项目使用的
mysql-connector-java5.1.27 与mysql的最新版本mysql8.0不兼容 所以把mysql的版本换成5左右 ,然后再docker内删除了容器和镜像但是忘了清理上面所映射的文件信息内容导致报出这个错误
sudo docker exec -it stock_v2_mysql /bin/bash 运行就会报错
Error response from daemon: Container c1d145299544e7743abb07af380e4d4e511999caf8ffbf4fe7dd229b9f9a827a is restarting, wait until the container is running \
红色箭头哪里没有映射端口号