Docker安装MySQL及phpMyAdmin
安装MySQL
Docker命令如下:
sudo docker run --privileged --restart=always --name mysql5 \
-p 3306:3306 \
-v /root/docker/mysql/cnf:/etc/mysql/conf.d \
-v /root/docker/mysql/log:/var/log/mysql \
-v /root/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root123 -d mysql:5.7
--privileged
给容器加权限
--restart=always
配置容器开机自启动
-e MYSQL_ROOT_PASSWORD
配置数据库密码,默认用户名为root
MySQL的conf文件,如果使用默认的,可不映射
开启MySQL远程连接
进入docker容器中的MySQL
# 查看docker中运行的容器
docker ps
# 进入某容器
docker exec -it {容器id} /bin/bash
# 进入mysql
mysql -uroot -p
配置权限
为老用户授权
use mysql;
# 授权
GRANT ALL PRIVILEGES ON *.* TO 'jira'@'%' IDENTIFIED BY 'jira12345'
# 刷新权限:
FLUSH PRIVILEGES;
授权命令格式:
grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"
说明:
上例中,*.*
代表所有数据库权限
@
后面是访问MySQL的客户端IP地址或主机名
---->%
表示任意的客户端
---->localhost
表示本地访问
修改数据表
use mysql;
update user set host = '%' where user = 'jira';
创建新用户
查看用户
use mysql;
select host,user,password from user;
创建用户
# 创建新用户
CREATE USER 'jira'@'%' IDENTIFIED BY 'jira123456';
修改密码
# 修改用户密码
SET PASSWORD FOR 'jira'@'%' = PASSWORD('jira123456');
Docker安装MySQL的Web管理工具phpMyAdmin
可以通过docker search
查找phpmyadmin
的镜像,并pull到本地。
docker run -it --name phpmyadmin77 -e MYSQL_USERNAME=root --link mysql5:db -p 8000:80 -d phpmyadmin/phpmyadmin
# OR
# docker run --name myphpmyadmin -d --link mysql5:db -p 8000:80 phpmyadmin/phpmyadmin
其中:mysql5
是docker中mysql容器的名字
启动MySQL失败问题
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
原因
因为Centos7安全Selinux禁止了一些安全权限,导致mysql
在进行挂载/var/lib/mysql
的时候会提示上面的信息。
解决方法
在docker run中加入 --privileged
给容器加上特定权限
sudo docker run --privileged --name mysql5 \
-p 3306:3306 \
-v /root/docker/mysql/cnf:/etc/mysql/conf.d \
-v /root/docker/mysql/log:/var/log/mysql \
-v /root/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.6