Docker安装mysql

安装

查看已有mysql镜像:

docker search mysql

[root@localhost ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   8202                [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   2794                [OK]                
mysql/mysql-server         Optimized MySQL Server Docker images. Create…   610                                     [OK]
percona                           Percona Server is a fork of the MySQL relati…   435                 [OK]                
......

拉取官方的镜像

docker pull mysql:5.6

运行容器

sudo docker run --name pwc-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

–name:给新创建的容器命名,此处命名为pwc-mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
-d:成功启动容器后输出容器的完整ID,例如上图 73f8811f669ee…
最后一个mysql指的是mysql镜像名字

[root@localhost ~]# docker run --name mysql-a  -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
4ba858e22b4806988233b4241c3109b9effd3f761c7242e5935ba50d3609f563

连接数据库

Navicat连接MySQL数据库出现Authentication plugin ‘caching_sha2_password’ cannot be loaded

解决

进入mysql:

[root@localhost ~]# docker exec -it mysql /bin/bash
root@4ba858e22b48:/# mysql -uroot -p123456
mysql> show databases;

修改加密规则:
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
更新一下用户的密码 :
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
刷新权限:
FLUSH PRIVILEGES;

更优雅的解决

# docker run -d
 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=weather_db
 -p 3307:3306 
 --name test-mysql --restart always
  -v  /home/ct/mysql/data:/var/lib/mysql  mysql:8.0.12  
  --default-authentication-plugin=mysql_native_password

数据备份与还原

数据备份

备份所有数据

 docker exec [container name/id] sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /home/mysql-bak/bak.sql

备份指定数据库

 docker exec [container name/id] sh -c 'exec mysqldump --all-databases db-test1 -uroot -p"123456"' > /home/mysql-bak/bak.sql

数据恢复

整体恢复

docker exec -i  [container name/id] sh -c 'exec mysql -uroot -p"root@2019"' < /home/mysql-bak/bak.sql

单个数据库恢复

# 查看备份的数据库sql
[root@localhost mysql-bak]# ls
bak.sql db-test1.sql

# 复制备份过的sql到mysql容器的根目录
[root@localhost mysql-bak]# docker cp ./db-test1.sql mysql_5.7:/

# 进入mysql容器
[root@localhost mysql-bak]# docker exec -it mysql_5.7 /bin/bash

# 登录msyql
root@localhost:/# mysql -uroot -proot

# 切换到要恢复的数据库
mysql> use db-test1;
Database changed

# 恢复数据库
mysql> source /db-test1.sql

参考

https://www.cnblogs.com/pwc1996/p/5425234.html

https://learnku.com/articles/44349

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值