Docker安装Mysql
官方地址: https://www.mysql.com/
mysql仓库地址: https://hub.docker.com/_/mysql
拉取镜像
docker pull mysql:tag
启动一个Mysql实例
docker run \
-p 3306:3306 \
--name mysql \
--network my_bridge \
--restart always \
-v /root/docker/mysql/conf:/etc/mysql \
-v /root/docker/mysql/logs:/var/log/mysql \
-v /root/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:tag
-d
后台运行容器,并返回容器ID
-p 3306:3306
主机与容器的端口映射,前者为主机端口,后者为容器端口
--name mysql
指定实例的名称
--network
加入容器桥接网络,使主机内的容器通过容器名称相互访问
创建自定义网络命令: docker network create my_bridge
--restart
自启动策略,always
表示无论退出状态是如何,都重启容器
-e MYSQL_ROOT_PASSWORD=123456
初始化root用户的密码
-v /root/docker/mysql/conf:/etc/mysql
配置文件映射到主机
-v /root/docker/mysql/logs:/var/log/mysql
日志文件映射到主机
-v /root/docker/mysql/data:/var/lib/mysql
数据库文件映射到主机
mysql:tag
镜像名称及版本
检查容器运行状态
docker container ls
可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字
进入容器连接Mysql
docker exec -it mysql bash
mysql -uroot -p123456
创建远程账户并授权
USE mysql;
CREATE USER 'username'@'host' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';
host
: 表示可访问的主机地址,通配符%
允许任意主机访问
ALL
: 用户的操作权限,如SELECT
,INSERT
,UPDATE
等,如果要授予所的权限则使用ALL
*.*
: 用户可操作的数据库及表名,*
则表示所有
删除远程账户
DROP USER 'username'@'host';
重启Mysql容器
docker restart mysql:tag
更多MySql环境变量
启动mysql
映像时,可以通过在docker run
命令行上传递一个或多个环境变量来调整MySQL实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下任何变量都不会起作用:在容器启动时,任何现有数据库都将保持不变。
MYSQL_ROOT_PASSWORD
此变量是必需变量,它指定将为MySQL root
超级用户帐户设置的密码。在上面的示例中,将其设置为my-secret-pw
。
MYSQL_DATABASE
该变量是可选的,并允许您指定要在映像启动时创建的数据库的名称。如果提供了用户名/密码(请参阅下文),则将授予该用户对该数据库的超级用户访问权限(对应于GRANT ALL
)。
MYSQL_USER
, MYSQL_PASSWORD
这些变量是可选的,与创建新用户和设置该用户的密码一起使用。该MYSQL_DATABASE
变量将为该用户授予超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。
请注意,无需使用此机制来创建根超级用户,该用户默认情况下是使用MYSQL_ROOT_PASSWORD
变量指定的密码创建的。
MYSQL_ALLOW_EMPTY_PASSWORD
这是一个可选变量。设置为非空值,例如yes
,以允许容器以root用户的空白密码启动。注意:yes
除非您真的知道自己在做什么,否则不建议将此变量设置为,因为这将使您的MySQL实例完全不受保护,从而使任何人都可以获得完全的超级用户访问权限。
MYSQL_RANDOM_ROOT_PASSWORD
这是一个可选变量。设置为非空值,例如yes
,以为root用户生成一个随机的初始密码(使用pwgen
)。生成的root密码将被打印到stdout(GENERATED ROOT PASSWORD: .....
)。
MYSQL_ONETIME_PASSWORD
初始化完成后,将root用户(不是MYSQL_USER
!中指定的用户)设置为过期用户,从而在首次登录时强制更改密码。任何非空值都将激活此设置。注意:仅MySQL 5.6+支持此功能。在MySQL 5.5上使用此选项将在初始化期间引发适当的错误。
MYSQL_INITDB_SKIP_TZINFO
默认情况下,入口点脚本会自动加载该CONVERT_TZ()
功能所需的时区数据。如果不需要,则任何非空值都将禁用时区加载。