Apple 的芯片,ARM 架构
M+ 是芯片的系列(苹果芯片、苹果 arm、m 系列)
docker run \\
--name mysql \\
-p 3306:3306 \\
-d \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_ROOT_HOST=% \\
ibex/debian-mysql-server-5.7
docker run
这是 Docker 中用于创建并启动一个新容器的基础命令。当你执行 docker run 时,Docker 会根据指定的镜像创建一个新的容器实例,并启动该容器。
--name mysql
该参数用于为新创建的容器指定一个名称,这里将容器命名为 mysql。指定名称后,在后续对容器进行操作(如停止、重启、删除等)时,可以直接使用这个名称,而不需要使用容器的长 ID,方便管理。
-p 3306:3306
这是端口映射参数,其格式为 主机端口:容器端口。在这个例子中,将主机的 3306 端口映射到容器内部的 3306 端口。这意味着当外部客户端(如 MySQL 客户端工具)连接到主机的 3306 端口时,实际上会被转发到容器内部的 3306 端口,从而可以访问容器内运行的 MySQL 服务。
-d
-d 是 --detach 的缩写,该参数的作用是让容器在后台(守护进程模式)运行。使用 -d 启动容器后,容器会在后台持续运行,不会占用当前终端的输入输出,你可以继续在终端执行其他命令。
-e MYSQL_ROOT_PASSWORD=123456
-e 是 --env 的缩写,用于设置容器内部的环境变量。MYSQL_ROOT_PASSWORD=123456 表示将容器内 MySQL 的 root 用户密码设置为 123456。在 MySQL 镜像启动时,会根据这个环境变量的值来初始化 root 用户的密码。
-e MYSQL_ROOT_HOST=%
同样是使用 -e 参数设置环境变量。MYSQL_ROOT_HOST=% 表示允许 root 用户从任何主机连接到 MySQL 数据库。在 MySQL 中,用户的权限是和主机相关联的,% 是一个通配符,表示任意主机。
ibex/debian-mysql-server-5.7
这是创建容器所使用的镜像名称。Docker 会根据这个镜像来创建容器实例,ibex 是镜像的仓库名或命名空间,debian-mysql-server-5.7 是具体的镜像名称,该镜像基于 Debian 系统,包含了 MySQL 5.7 数据库服务。
# my.cnf 配置文件
# 我调整了启动用户和事物级别RC
[mysqld]
user = root
transaction-isolation = READ-COMMITTED
chmod -R 755 /Users/用户名称/devlop/mysqlConfig
chmod -R 755 /Users/用户名称/devlop/mysqlData
# docker 启动 运行报错挂在磁盘情况,修改为下面方式就不报错了 m1pro 机型
# Caused by: java.sql.SQLException: Incorrect information in file: './criminal_case_process/act_hi_procinst.frm'
docker run \\
--name mysql \\
-p 3306:3306 \\
-d \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_ROOT_HOST=% \\
-v /Users/用户名称/devlop/mysqlConfig/my.cnf:/etc/mysql/my.cnf \\
-v /Users/用户名称/devlop/mysqlData:/var/lib/mysql \\
ibex/debian-mysql-server-5.7
docker run \\
--name mysql \\
-p 3306:3306 \\
-d \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_ROOT_HOST=% \\
-v /Users/用户名称/devlop/mysqlConfig/my.cnf:/etc/mysql/my.cnf \\
ibex/debian-mysql-server-5.7
docker exec -it mysql bash
mysql -uroot -p
# 修改密码创建权限
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON systest.* TO root@'%' identified by 'root';
docker pull mysql:5.7
D:/Devlop/dockerMysql57/data
D:/Devlop/dockerMysql57/logs
D:/Devlop/dockerMysql57/conf
# 正常linux换行符
docker run --name mysql-5.7 \\
-p 3306:3306 \\
-v D:/Devlop/dockerMysql57/data:/var/lib/mysql \\
-v D:/Devlop/dockerMysql57/logs:/var/log/mysql \\
-v D:/Devlop/dockerMysql57/conf:/etc/mysql/conf.d \\
-v D:/Devlop/dockerMysql57/conf/my.cnf:/etc/mysql/my.cnf \\
-e MYSQL_ROOT_PASSWORD=123456 \\
-e MYSQL_ROOT_HOST=% \\
--privileged=true \\
--restart=always \\
-d mysql:5.7
# 使用 PowerShell 的换行符
docker run --name mysql-5.7 `
-p 3306:3306 `
-v D:/Devlop/dockerMysql57/data:/var/lib/mysql `
-v D:/Devlop/dockerMysql57/logs:/var/log/mysql `
-v D:/Devlop/dockerMysql57/conf/my.cnf:/etc/mysql/my.cnf `
-e MYSQL_ROOT_PASSWORD=123456 `
-e MYSQL_ROOT_HOST=% `
--privileged=true `
--restart=always `
-d mysql:5.7
#进入容器
docker exec -it mysql-5.7 bash
#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';
#添加远程登录用户
CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!';
GRANT ALL PRIVILEGES ON *.* TO 'liaozesong'@'%';
# 进入 MySQL 验证隔离级别
docker exec -it mysql-5.7 mysql -uroot -p123456
docker exec -it mysql-5.7 bash -c "mysqld --verbose --help > /dev/null 2>&1"
docker exec -it mysql-5.7 bash
bash-4.2# mysql --help | grep my.cnf
mysql: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
# 修改文件权限,该文件的权限设置为所有人可写(world - writable),这在安全方面存在风险,所以 MySQL 选择忽略它。