Hekyのblog

docker安装mysql

拉取镜像

docker pull mysql:latest
想要比较稳定的版本可以用5.7或者8.0 (或者8.4?) 比如mysql:5.7 或mysql:8.0

部署镜像

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest  

docker run
启动一个新的 Docker 容器。

-p 端口映射
--name 为这个容器指定一个名称

-v 将当前工作目录挂载到容器内的目录 $PWD表示当前目录,可以根据需要自行修改

-e 设置环境变量

-d 以后台模式运行容器(detached mode),容器启动后不会阻塞当前的终端,会在后台运行。

mysql:latest 指定使用最新版本的 MySQL 官方镜像。如果没有本地镜像,Docker 会从 Docker Hub 拉取最新的 MySQL 镜像。

使用

由于 mysql 的安全策略,现在还不能使用 root/123456 来访问数据库
运行下面命令来进入容器

docker exec -it mymysql /bin/bash

这条命令的作用是在已经运行的容器内启动一个交互式 Bash Shell,让你直接进入容器内部进行操作。

docker exec exec 命令用于在一个已经处于运行状态的容器中执行新的命令。
-it

-i:交互式(interactive),让命令在前台保持对键盘输入的监听。
-t:伪终端(pseudo-TTY),为容器内的进程分配一个伪终端,方便进行命令行操作。

/bin/bash 指定要在容器中执行的命令,这里是 Bash Shell。执行后会打开一个终端会话环境,可以在容器内输入各种 Shell 命令。

之后运行以下命令进去mysql

mysql -uroot -p123456

-u 表示用户
-p 表示密码

创建root用户和权限授予

步骤 1:创建用户或修改用户密码

如果用户不存在,使用 CREATE USER 创建用户并设置密码

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';

如果用户已存在,使用 ALTER USER 修改用户密码

ALTER USER 'root'@'%' IDENTIFIED BY 'root';
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'root';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

步骤 2:授予权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

步骤 3:刷新权限(可选)

在 MySQL 8.0 及更高版本中,GRANT 语句会自动刷新权限,因此通常不需要手动执行 FLUSH PRIVILEGES;。但如果你进行了其他权限表的直接修改,可以使用:

FLUSH PRIVILEGES;

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »