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