docker pull mysql:5.7
当然为了安全也可以切换在非root用户下操作 su www
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
docker start
docker logs [容器id]
查看相关信息 发现如下错误2023-07-24 08:48:18+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.42-1.el7 started.
2023-07-24 08:48:18+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.r6ee7F88rL
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
其实就是映射目录下的/etc/mysql/conf.d/
不存在
此时在宿主机对应位置创建对应目录即可 mkdir -p /mydata/mysql/conf/conf.d/
再次尝试启动 仍然有错误这里就不一一展示错误了,直接把对应目录和文件都建好
mkdir -p /mydata/mysql/conf/mysql.conf.d
初始配置文件
vi /mydata/mysql/conf/conf.d/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
再次运行docker容器的启动命令 便可以正常启动容器了
根据 -e MYSQL_ROOT_PASSWORD=root \
可知 初始的mysql账户密码就是 root/root
交互式进入mysql
docker exec -it mysql mysql -uroot -proot
替换为新密码new_password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
docker exec -it mysql mysql -uroot -p
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON your_database.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
curl ifconfig.me
获取本机外网地址
防火墙打开3306端口
使用mysql工具访问对应ip使用root用户或新建用户账户密码远程链接即可
参考地址
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。