Docker安装mysql
docker pull mysql:5.7
:从Docker Hub上拉取MySQL 5.7的镜像。docker images
:列出所有已下载的镜像,确认MySQL 5.7是否已经成功下载。mkdir -p /home/service/mysql/data
:创建一个用于存放MySQL数据的目录。mkdir -p /home/service/mysql/conf
:创建一个用于存放MySQL配置文件的目录。cd /home/service/mysql/conf
:切换到MySQL配置文件目录。
6.touch my.cnf
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
default-time_zone = '+8:00'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
-
[mysqld]
:这个部分包含了MySQL服务器的配置。user=mysql
:指定了MySQL服务的运行用户为mysql。character-set-server=utf8
:设置了MySQL服务器默认的字符集为utf8。default_authentication_plugin=mysql_native_password
:指定了MySQL服务器默认的认证插件为mysql_native_password。default-time_zone = '+8:00'
:设置了默认的时区为东八区(GMT+8)。
-
[client]
:这个部分包含了客户端的配置。default-character-set=utf8
:设置了客户端默认的字符集为utf8。
-
[mysql]
:这个部分包含了MySQL客户端程序的配置。default-character-set=utf8
:设置了MySQL客户端程序默认的字符集为utf8。
docker run -p 3306:3306 --name mysql -v /home/service/mysql/logs:/logs -v /home/service/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=Wing1Q2W#E -d mysql:5.7
这个命令运行了一个 MySQL 5.7 容器,并且:
-p 3306:3306
:将容器内的 MySQL 服务端口映射到主机的端口 3306,这样可以从主机访问 MySQL 服务。--name mysql
:给容器取了一个名字叫做 "mysql",以便于后续管理和操作。-v /home/service/mysql/logs:/logs
:将主机上的/home/service/mysql/logs
目录挂载到容器内的/logs
目录,可能用于 MySQL 的日志记录。-v /home/service/mysql/data:/mysql_data
:将主机上的/home/service/mysql/data
目录挂载到容器内的/mysql_data
目录,用于持久化 MySQL 的数据。-e MYSQL_ROOT_PASSWORD=Wing1Q2W#E
:设置了 MySQL 的 root 用户的密码为 "*****"。这个环境变量会被容器内的 MySQL 镜像使用,用来设置 MySQL 数据库的 root 用户的密码。-d
:让容器在后台以守护进程方式运行,即使当前终端退出也不会停止容器运行。
docker exec -it mysql bash 这个命令尝试在名为 "mysql" 的容器中执行一个交互式的 Bash shell。这个命令的含义是:
docker exec
:在运行的容器中执行命令。-it
:指定交互式终端(interactive TTY),使得我们可以与 Bash shell 进行交互。mysql
:要执行命令的容器的名称或者ID。bash
:要执行的命令,这里是启动 Bash shell。
通过这个命令,你可以在 MySQL 容器中进入一个交互式的 Bash shell,从而进行一些诊断、配置或者其他操作。
CREATE USER 'admin'@'%' IDENTIFIED BY '******';
GRANT ALL ON *.* TO 'admin'@'%';
flush privileges;
这些 MySQL 命令用于创建一个名为 "admin" 的用户,允许从任何主机('%')连接,并且授予该用户对所有数据库的所有权限。下面是每个命令的解释:
-
CREATE USER 'admin'@'%' IDENTIFIED BY 'Wing1Q2W#E';
:创建一个名为 "admin" 的用户,并指定该用户可以从任何主机('%')连接,密码为 'Wing1Q2W#E'。 -
GRANT ALL ON *.* TO 'admin'@'%';
:授予用户 "admin" 对所有数据库('.')的所有权限。这包括对所有数据库的所有表进行 SELECT、INSERT、UPDATE、DELETE 等操作的权限。 -
flush privileges;
:刷新权限,使新的权限设置立即生效。
执行这些命令后,用户 "admin" 将拥有对 MySQL 服务器上的所有数据库的完全访问权限。
docker ps 查看启动状态