docker安装mysql

记录一下自己使用docker安装mysql的过程。

我对比了一下。发现第一个是mysql官方推出的,而第二是docker自带library推出的。那么我肯定选择mysql官方推出的mysql了。

既然确定了要安装的包,那么就要开始拉取了。

  • MySQL Server 5.5 (tag: 5.5, 5.5.61, 5.5.61-1.1.7) (mysql-server/5.5/Dockerfile)
  • MySQL Server 5.6 (tag: 5.6, 5.6.41, 5.6.41-1.1.7) (mysql-server/5.6/Dockerfile)
  • MySQL Server 5.7 (tag: 5.7, 5.7.23, 5.7.23-1.1.7) (mysql-server/5.7/Dockerfile)
  • MySQL Server 8.0, the latest GA (tag: 8.0, 8.0.12, 8.0.12-1.1.7, latest) (mysql-server/8.0/Dockerfile)
  • MySQL Server 8.0 for AArch64 (ARM64) (tag: 8.0-aarch64, 8.0.12-aarch64)

上面是可以安装的版本。那么我肯定是安装latest的。

安装

那么执行代码如下:

docker pull mysql/mysql-server

如果想要安装5.7版本的,可以执行以下命令:

docker pull mysql/mysql-server:5.7

好了等待之后,就安装成功了,接下来,我们看看我们在本地存储的镜像。

$ docker image ls
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
mysql/mysql-server                              latest              1fdf3806e715        5 weeks ago         309MB

接下来执行创建容器的命令。

docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:latest

在这里要注意的是最后的:latest,这个是可省略的。如果刚才安装的是指定版本,比如5.7,那么我们就需要执行以下命令了:

docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.7

好了,安装完成,就可以使用PHP进行连接测试了。

$pdo = new \PDO("mysql:host=127.0.0.1;dbname=mysql", "root", "123456");
$data = $pdo->query("select version()");
foreach($data as $item) {
    var_dump($item);
}

会提示如下错误:

Host '172.17.0.1' is not allowed to connect to this MySQL server

那么我们只能登录mysql进行修改数据了,首先是登录mysql,密码就是我们设置的123456:

$ docker exec -it mysql1 mysql -uroot -p
Enter password:

然后执行如下命令:

use mysql;
update user set host = '%' where user = "root";
flush privileges;

我们继续测试PHP脚本,发现链接就正常了:

$ php ./demo.php
/Users/baoguoxiao/demo.php:5:
array(2) {
  'version()' =>
  string(6) "8.0.12"
  [0] =>
  string(6) "8.0.12"
}

查询日志

docker logs mysql1

登录shell

docker exec -it mysql1 bash

停止容器

docker stop mysql1

开启容器

docker start mysql1

重启容器

docker restart mysql1

删除容器

docker stop mysql1
docker rm mysql1

从另外的容器中连接mysql

暂无

Docker 环境变量

其实我们在创建container的时候就已经用了一个环境变量了,就是MYSQL_ROOT_PASSWORD,现在我们来介绍一些其他的环境变量

  • MYSQL_RANDOM_ROOT_PASSWD 该值默认为ture(除非MYSQL_ROOT_PASSWORD设置了或者MYSQL_ALLOW_EMPTY_PASSWORD设置为true了),意思是在启动docker容器时随机生成root密码。密码打印到日志中。查看随机密码的方式如下: $ docker logs mysql1 2>&1 | grep GENERATED GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
  • MYSQL_ONETIME_PASSWORD 默认为ture(除非MYSQL_ROOT_PASSWORD设置了或者MYSQL_ALLOW_EMPTY_PASSWORD设置为true了)root用户的密码设置为expired,必须先修改密码才能使用。
  • MYSQL_DATABSE 指定在容器创建时同时创建数据库的名称。如果启动参数也有MYSQL_USERMSQL_PASSWORD,则会创建用户并授予该数据库对应的用户权限。如果指定的数据库已经存在了,则该变量无效。
  • MYSQL_USER和MYSQL_PASSWORD 该变量用户创建用户名和密码,并为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限。如果两个变量没有设置,则其他会被忽略。如果两个变量都已设置但是没有设置MYSQL_DATABASE,则创建的用户没有任何权限。
  • MYSQL_ROOT_HOST 默认情况下,MySQL会设置”root@localhost”账户,此账户只能从内部进行连接。要允许其他主机的根连接,就需要设置此变量了。例如,该值172.17.0.1(默认的docker网关IP)允许来自运行容器的主机的连接。但是该选项仅接受一条记录,但是允许使用通配符(例如,MYSQL_ROOT_HOST=172...*或MYSQL_ROOT_HOST=%)。
  • MYSQL_LOG_CONSOLE 当变量为true时(MySQL8.0服务器容器的默认状态),MySQL服务器的错误日志被重定向到stderr,以便错误日志进入docker容器的日志,并且可以使用docker logs mysqld-container进行查看。
  • MYSQL_ROOT_PASSWORD 此变量指定为MySQL root账户设置的密码。在命令行上设置MySQL root密码是不安全的,因为可以通过history查看命令历史从而获取创建的密码。所以最好是试用默认设置。
  • MYSQL_ALLOW_EMPTY_PASSWORD 默认为false,如果将其设置为true,则表示允许root用户使用空密码启动。但是在非开发环境设置此变量为true是不安全的,因为他会让MySQL实例完全不受保护,从而允许任何人都可以获得弯针的超级用户访问权限。最好试用默认设置。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • yum 安装 mysql

    每次安装mysql的时候都非常痛苦。因为至少要编译半个小时,在想有没有什么简单的办法,我一查官方文档,真让我看到一个简单的yum的安装办法。现在步骤如下:

    魔王卷子
  • docker学习笔记之三 容器

    我们使用cd命令进入到该文件夹。然后我们创建一个叫做Dockerfile的文件。把以下内容复制并粘贴到刚才创建的文件中并保存。

    魔王卷子
  • docker学习笔记之二 起步和入门

    运行docker version(不带–)或者docker info来获取docker安装的更多信息。

    魔王卷子
  • 关于mysql的1067与1045错误

    以前装过xampp后,发现用它的话,想学点东西有点困难(太傻瓜化了)。干脆自己弄环境去折腾一把…

    meteoric
  • Linux下MySQL的彻底卸载和安装配置字符集

    前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了。之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子。...

    逸鹏
  • 19.多端项目上线部署(1)同步数据库

    玩蛇的胖纸
  • 处理java访问mysql连接数太多的错误

    在生产环境处理故障的过程出现了java服务连接mysql,由于连接数太多被拒绝连接的故障,那么下面来看看怎么优化一下吧。

    Devops海洋的渔夫
  • MySQL数据库安装笔记教程

    下载之后,我选择直接解压到D盘,文件地址是:D:\mysql-5.7.23-winx64,这里说这么清楚,是为了接下来的环境配置。你也可以根据自己个人喜好选择对...

    挨踢小子部落阁
  • 技术分享 | MariaDB 10.1.9 迁移到 MySQL 5.7.25

    爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查,对数据库有兴趣,对技术有想法。一入 IT 深似海,从此节操是路人。

    爱可生开源社区
  • 新手学Linux(八)----MySql安装(Centos7)

    最近项目新申请了云服务器,老大让我搭了下环境,在安装MySql的时候遇到的坑稍微多点,所以在这里做个记录,我的安装方式不是通过安装包来安装的,而是通过yum来...

    令仔很忙

扫码关注云+社区

领取腾讯云代金券