《Docker》- 从mysqlServer升级到docker mysql

120 阅读1分钟
原文链接: huchengzhang.com

查看mysql 数据库数据文件

# mysql 
 > show variables like '%dir%'

切换目录,配置文件上传git

  • git ssh生成
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  • ssh key
    $ cat /root/.ssh/id_rsa.pub
    

docker mysql 镜像

$ docker pull mysql

docker 启动

$ systemctl start docker

docker mysql 启动

$ docker run -p 3306:3306 --name dbmysql -e MYSQL_ROOT_PASSWORD=<my-secret-pw> -d mysql
# 譬如
$ docker run -p 3306:3306  -v /var/lib/mysql:/var/lib/mysql --name dbmysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
 --default-authentication-plugin=mysql_native_password

指定配置文件

$ docker run -p 3306:3306 -v </my/custom>:/etc/mysql/conf.d --name \
   dbmysql -e MYSQL_ROOT_PASSWORD=<my-secret-pw> -d mysql

指定数据文件

$ docker run -p 3306:3306  -v /my/own/datadir:/var/lib/mysql --name dbmysql \
   -e MYSQL_ROOT_PASSWORD=<my-secret-pw> -d mysql

shell

$ docker exec -it dbmysql bash

shell - 问题

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

navicat 连接mysql v8

  • 修改访问host
    $ docker run -d -p 3307:3306  --name dbmysql -e MYSQL_ROOT_PASSWORD=123456  mysql
    
    # mysql 
    > alter user 'root'@'%' identified with mysql_native_password by '123456';
    
  • 刷新
    # mysql 
     > flush privileges;
    
  • 查看
    # mysql
    > select Host,User from mysql.user;
    

  • 连接 - ssh通道

mysql升级

  • mysqlserver数据内容导出

    $ mysqldump  --databases <dbname1> <dbname2>  -uroot -p123456 > /var/lib/dbmysql/dump.sql
    
  • 进入容器

    $ docker exec -it dbmysql bash 
    $ mysql -uroot -p
    
  • 导入sql dump文件

    docker exec -i dbmysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /var/lib/dbmysql/dump.sql
    #  此处会给出警告,
    # mysqldump: [Warning] Using a password on the command line interface can be insecure
    

  • 查看数据库
    此处各不相同,自行测试

  • 基于上述端口为3307,修改端口为3306

    $ cd /var/lib/docker/container
    

  • 修改对应的文件

    $ vi hostconfig.json
    $ vi config.v2.json
    

  • 重新启动docker

    # 切记修改端口前,一定要stop docker,否则修改无效。
    # systemctl stop docker 
    $ systemctl start docker
    

卸载之前的mysql

  • 搜索已有mysql包

    $ rpm -qa|grep -i mysql
     mysql-community-server-5.7.20-1.el7.x86_64
     mysql-community-libs-5.7.20-1.el7.x86_64
     mysql-community-libs-compat-5.7.20-1.el7.x86_64
     mysql57-community-release-el7-7.noarch
     mysql-community-client-5.7.20-1.el7.x86_64
    
  • 删除包

    $ rpm -ev mysql-community-common-5.7.20-1.el7.x86_64
    
  • 搜索配置

    [root@VM_0_5_centos dbmysql]# find / -name mysql
     /usr/share/mysql
     /etc/selinux/targeted/active/modules/100/mysql
     /etc/selinux/targeted/tmp/modules/100/mysql
     /etc/mysql
    
  • 删除配置文件

    rm -rf /etc/my.cnf
    

参考

docker-mysql