docker run -p 3307:3306 --name mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/mysql-files:/var/lib/mysql \
-v /mydata/mysql/secure-file-priv:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.24

注:
1.此时docker中mysql的3306端口映射到linux上的3307端口(因我linux服务器中docker外部已安装了mysql,3306已被占用),可自定义,挂载到linux上未被其他进程占用的空闲端口即可。
2.docker中的配置文件被挂载到了linux中/mydata目录下中(mydata内的文件夹手动或非手动创建都行,非手动创建的话会自动生成。)
3.若外部通过sqlyog连接不上docker中的mysql,需先在docker内部docker ps一下,看mysql是否还在运行。
4.若docker ps后发现mysql一直在运行,但sqlyog连不上,可先在docker中进入mysql,通过命令进行配置,再在外面进行连通。
命令配置如下:
1.进入mysql

docker exec -it mysql /bin/bash

(-p后面是我创建的数据库实例中root用户的密码,我创建实例中设的root密码是123456,自己创建实例时密码根据个人兴趣设定即可)。

mysql -uroot -p123456;

3.输入sql语句

use mysql;
select host,user,plugin,authentication_string from user;

5.注:下面这句若提示错误则可能是root用户的密码不是123456,写错密码了(我创建实例中设的root密码是123456,自己创建实例时密码根据个人兴趣设定即可)。

create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;

注:下句是将user表中plugin字段中root用户的密码设为mysql_native_password(即改为自己的密码),自己的密码不是123456的,此语句中需要写自己的密码(我创建实例中设的root密码是123456,自己创建实例时密码根据个人兴趣设定即可)。

alter user 'root'@'%' identified with mysql_native_password by '123456';
select host,user,plugin,authentication_string from user;
flush privileges;

注:在docker中的mysql中语句界面,先输入exit;或quit;退出sql命令模式到mysql账号处,再在mysql账号处输入exit;退出到linux用户处。
8.
linux服务器中配置docker开机自启(linux一开,docker就开):

systemctl enable docker.service

docker中配置mysql开机自启(docker一开,mysql就开):

docker update --restart=always mysql
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐