一、前期准备

      1.安装linux虚拟机(本机使用的是centOS7 64位系统);

      2.配置linux虚拟机网络,使虚拟机能够联网

       2.本机Navcat 软件,用于验证远程连接;

二、安装Docker

       1.检查系统内核版本,必须是3.10及以上 ,如果不是3.10以上请自行升级系统内核

           [[email protected] ~]#uname -r

       2.安装docker

          [[email protected] ~]# yum -y install docker-io

       3.启动docker

          [[email protected] ~]# systemctl start docker

        4.查看docker状态

           [[email protected] ~]# service docker status

           LINUX系统下安装mysql并配置外部连接

        5.每次系统重启之后就需要重启一次docker容器,比较麻烦,故将docker设置为开机启动

            [[email protected] ~]# systemctl enable docker

三、docker到这里就安装完成了,现在我们我们接着安装mysql

      1.搜索镜像

          docker search 镜像名(如docker search mysql)

         LINUX系统下安装mysql并配置外部连接

       2.拉取镜像

         docker pull 镜像名

       3.查看容器中的本地镜像

          docker images

LINUX系统下安装mysql并配置外部连接

       3.根据镜像启动容器

          [[email protected] ~]# docker run ‐‐name mysql01 ‐d mysql

这样启动是错误的,因为没有指定root 用户密码等,我们查看下日志

           [[email protected] ~]# docker logs 42f09819908b

error: database is uninitialized and password option is not specified   You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and  MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个

说明启动是没有成功的

正确的启动方式是这样的:

LINUX系统下安装mysql并配置外部连接

          [[email protected] ~]# docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql

 我们查看运行的容器

          [[email protected] ~]# docker ps

LINUX系统下安装mysql并配置外部连接

说明已经启动成功了,但是这样我们外部并不能够连接上,因为我们mysql是在docker容器里面启动的,mysql指定端口3306是docker 容器内的,我们需要配置对外的端口,另外为了避免由于防火墙等原因导致连接异常,系统一开始建议关闭防火墙或者开放指定的端口。

现在我们关闭刚才的运行的mysql重新启动,并做外部端口映射

关闭容器:

docker stop 容器的id

           [[email protected] ~]#  docker stop ecd8ca39190a

做端口映射并重新启动

            [[email protected] ~]# docker run ‐p 3307:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d

                   3307:外部访问端口

                   3306:mysql数据库的端口,即docker内部指定端口

                   123456:给root数据库设置密码

四、外部通过navcat连接数据库

     LINUX系统下安装mysql并配置外部连接

         这里如果连接成功,那么docker安装mysql就连接成功了,如果出现连接错误1251,那么请继续往下看

        如果连接错误,那么就需要进入mysql里面进行设置了

                     [[email protected] ~]#   docker exec -it dockermysql bash

                           docker exec 进入容器
                           -t 让docker分配一个伪终端,并绑定到容器的标准输入上;
                           -i 让容器的标准输入保持打开;
                           dockermysql 是容器的名字。

            LINUX系统下安装mysql并配置外部连接

    输入root用户并输入密码(密码是启动时设置的):

            [email protected]:/# mysql -u root -p

修改用户权限:grant all privileges on *.* to 'root'@'%';

刷新权限:flush privileges;

再次在主机上使用navcat连接,如果还是不通,继续:

查看用户信息:

select host,user,plugin,authentication_string from mysql.user;LINUX系统下安装mysql并配置外部连接

 特别提醒:host为 % 表示不限制ip   localhost表示本机使用    plugin非mysql_native_password 则需要修改密码

修改用户密码:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword'; #更新一下用户的密码 root用户密码为newpassword

再次连接就能够连接成功了。

本博客只是本人对于docker在安装mysql过程中出现的一系列问题,如果有不同的地方,欢迎大家留言讨论
 

相关文章:

  • 2021-04-25
  • 2021-09-05
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
  • 2021-07-26
  • 2021-07-04
猜你喜欢
  • 2021-12-17
  • 2021-04-27
  • 2021-07-13
  • 2021-09-14
  • 2022-03-03
  • 2022-12-23
  • 2022-02-07
相关资源
相似解决方案