docker容器中部署mysql/mariadb

启动数据库

docker run -p 3306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=12345 -d mariadb

以交互模式进入容器

docker exec -it mariadb bash

登陆数据库

mariadb -u root -p
12345

如果登录提示【ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)】

复制代码
在容器中找到配置文件添加跳过权限
echo "skip-grant-tables" >> mysqld.cnf
不同的版本号配置文件不一致
举例mysql:5.7.22
cat /etc/mysql/my.cnf  内容如下表示用的其他配置文件组合起来的,skip-grant-tables该指令需要加载[mysqld]下
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

cat /etc/mysql/mysql.conf.d/mysqld.cnf 内容如下
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
在这个后边直接追加即可
exit;退出容器重启mysql
docker restart mysql


复制代码

 

修改数据库用户名密码为root(sql)

复制代码
//方式1
set password for root@localhost = password('root');
//方式2
Use mysql;
Update user set authentication_string = password('root') where user = 'root';
//方式3 mysql8
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;//刷新权限
如果有添加过skip-grant-tables则查找该字符串排除后放到临时文件 再覆盖
 grep -v 'skip-grant-tables' mysqld.cnf > mysqld.cnf.tmp && cp mysqld.cnf.tmp mysqld.cnf
复制代码

mysql对root进行授权(sql)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

授权后即可使用宿主机的ip连接mysql

如:ubuntu为宿主机IP为:192.168.1.1 使用docker部署mysql则进入mysql容器授权后即可连接 
//用户名:root
//密码:root
//ip地址:192.168.1.1
//端口:3306

 

posted @   白玉神驹  阅读(327)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示