02 使用 Docker 安装 MySQL
02 使用 Docker 安装 MySQL
一、搜索 MySQL 镜像
docker search --limit 5 mysql
只列出前 5 个即可
二、拉取 5.7 版本的 MySQL
docker pull mysql:5.7
三、查看本地主机上的镜像
docker images
四、配置 my.cnf
新建一个配置文件 my.conf 解决乱码,通过容器数据卷同步给 mysql 容器实例
创建一个目录用来 mysql 容器共享
mkdir /usr/docker/mysql/conf
如果报错目录不存在就加上参数 -p
mkdir -p /usr/docker/mysql/conf
进入 mysql 目录,创建 my.cnf 文件
cd /usr/docker/mysql/conf
vim my.cnf
保存以下内容
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
关于 my.cfn :https://blog.csdn.net/ookaoooo/article/details/121652283
五、启动 MySQL 镜像
先看一下 3306 端口是否被占用
lsof -i:3306
如果被占用,直接杀进程就好 kill -9 [PID]
两种启动方式:docker run 命令启动和 docker-compose
5.1 docker run 命令启动
启动一个 MySQL 实例,需要映射日志、数据、配置文件,注意挂载路径要对应
docker run -d -p 3306:3306 --privileged=true --restart=always \
-v /usr/docker/mysql/log:/var/log/mysql \
-v /usr/docker/mysql/data:/var/lib/mysql \
-v /usr/docker/mysql/conf:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime
-e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
命令解析: -d 后台启动,-p 端口映射,--privileged=true 容器数据卷权限开启
提示:记录好启动参数
查看镜像
5.2 docker-compose
六、设置数据库外部连接
登录到数据库:
docker exec -it mysql bash
mysql -u root -p
然后输入上面启动时配置的密码:
执行 use mysql;
切换数据库,select host,user from user;
查看用户
可以看到 user 为 root,host 为 localhost 的话,说明 mysql 只允许本机连接,那么外网、本地软件客户端就无法连接了。
6.1 简单的操作
最简单的方式可以将 root 的 host 设置为 % ,然后刷新权限即可(我这里已经有了,在第一行,如果没有的话可以执行下面的命令)。
update user set host='%' where user ='root';
flush privileges;
使用 Navicat 测试连接:
6.2 更好的操作
不建议直接修改 root 用户,最好新建一个用户
CREATE USER 'devUser'@'%' IDENTIFIED BY 'devUser';
接下来我们使用新用户测试连接:
查看新用户的权限:
show grants for devUser;
可以看出,用户目前没有任何权限,创建一个数据库,为用户赋予这个数据库的所有权限:
create database `<database>` charset utf8;
GRANT ALL PRIVILEGES ON `<database>`.* TO 'devUser';
接下来就可以使用 devUser 用户对 test 这个数据库进行任何操作了。