MySQL 管理与使用指南
本文档涵盖 Windows Docker 环境部署 MySQL、本地服务启停、用户权限管理及配置文件说明,保留必要的操作细节与参数解释。
参考风格:菜鸟教程 - MySQL
一、使用 Docker 部署 MySQL(Windows 示例)
1. 查看本地镜像
docker images
2. 拉取 MySQL 镜像
若本地无所需镜像,则拉取:
docker pull mysql:9.6.0
3. 启动容器
关于换行符的特别说明:
Windows CMD 使用
^Windows PowerShell 使用
`Linux / Mac 使用
\
执行前请确保宿主机已创建数据持久化目录:D:\Z-Source\Docker\MySQL
docker run -d \
--name MySQL \
-p 3306:3306 \
-v D:\Z-Source\Docker\MySQL:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_ROOT_HOST=% \
-e TZ=Asia/Shanghai \
mysql:9.6.0
各参数含义:
4. 查看运行中的容器
docker ps
5. 进入 MySQL 容器并连接数据库
docker exec -it MySQL mysql -h127.0.0.1 -uroot -p123456
命令分解说明:
docker exec -it MySQL:在名为MySQL的容器中打开一个交互式终端。mysql -h127.0.0.1 -uroot -p123456:-h:指定要连接的 MySQL 服务器主机地址,此处为本地容器内的回环地址(本地可省略)。-u:指定登录用户名,此处为root。-p:指定用户密码,此处直接跟密码123456(也可仅写-p后回车输入,更安全)。
二、本地安装 MySQL 的启停命令
Windows 系统
net start mysql # 启动 MySQL 服务
net stop mysql # 停止 MySQL 服务
Linux 系统
1. 启动服务
sudo systemctl start mysql
# 或旧版命令
sudo service mysql start
2. 关闭服务
sudo systemctl stop mysql
# 或
sudo service mysql stop
3. 重启服务
sudo systemctl restart mysql
# 或
sudo service mysql restart
4. 查看服务状态
sudo systemctl status mysql
# 或
sudo service mysql status
macOS 系统
# 启动
sudo /usr/local/mysql/support-files/mysql.server start
# 停止
sudo /usr/local/mysql/support-files/mysql.server stop
# 重启
sudo /usr/local/mysql/support-files/mysql.server restart
# 状态
sudo /usr/local/mysql/support-files/mysql.server status
注意:macOS 下 MySQL 默认安装路径为
/usr/local/mysql/,具体路径可能因安装方式而异。
三、MySQL 用户与权限管理
1. 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
示例:
CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123';
2. 授予权限
GRANT privileges ON database_name.* TO 'username'@'host';
补充说明:
privileges:所需授予的权限,如ALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETE等,多个权限用逗号分隔。database_name.*:指定作用对象。*表示该数据库下的所有表;若只针对某张表,则写为database_name.table_name。
示例:
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';
3. 刷新权限
权限变更后必须执行,使修改立即生效:
FLUSH PRIVILEGES;
4. 查看用户权限
SHOW GRANTS FOR 'username'@'host';
示例:
SHOW GRANTS FOR 'john'@'localhost';
5. 撤销权限
REVOKE privileges ON database_name.* FROM 'username'@'host';
示例:
REVOKE ALL PRIVILEGES ON test_db.* FROM 'john'@'localhost';
6. 修改用户密码
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
示例:
ALTER USER 'john'@'localhost' IDENTIFIED BY 'newpassword456';
7. 修改用户可连接主机
MySQL 不支持直接修改用户主机,需先删除原用户,再重新创建。
-- 1. 删除旧用户
DROP USER 'john'@'localhost';
-- 2. 重新创建并指定新主机
CREATE USER 'john'@'%' IDENTIFIED BY 'password123';
8. 删除用户
DROP USER 'username'@'host';
示例:
DROP USER 'john'@'localhost';
9. 创建用户时同时授权(MySQL 8.0.16+ 支持)
CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';
四、配置文件 /etc/my.cnf 说明
/etc/my.cnf 是 MySQL 的主配置文件(Linux 环境下默认路径),用于控制服务器的运行参数。
默认配置示例
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
五、MySQL 常用管理命令速查
以下命令均在 MySQL 客户端内执行。
示例:
-- 选择数据库
USE RUNOOB;
-- 查看所有表
SHOW TABLES;
-- 查看 runoob_tbl 表的字段结构
SHOW COLUMNS FROM runoob_tbl;
-- 查看 runoob_tbl 表的索引
SHOW INDEX FROM runoob_tbl;
-- 查看以 runoob 开头的表的状态信息(纵向显示)
SHOW TABLE STATUS FROM RUNOOB LIKE 'runoob%' \G;
命令语法教学
创建数据库
CREATE DATABASE 数据库名;
也可以适当的指定字符集和排序规则,我们有很多的字符集和排序规则,这里谨慎使用
CREATE DATABASE IF NOT EXISTS mydatabase
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
CHARACTER SET utf8mb4:
数据库用 utf8mb4 字符集(能存所有中文、表情、特殊符号)COLLATE utf8mb4_general_ci:
排序规则用 不区分大小写、通用排序
常用的字符集和排序规则有:
一、常用字符集对比表 (Character Set)
二、常用排序规则对比表 (Collation)
排序规则通常与字符集配套使用,命名规律如下:
_ci (Case Insensitive):不区分大小写 (最常用)
_cs (Case Sensitive):区分大小写 (较少用)
_bin (Binary):二进制比较 (严格区分,按编码值排序)
三、最常用组合推荐表 (直接抄)
MySQL 删除数据库
drop 命令删除数据库
drop 命令格式:
DROP DATABASE <database_name>; -- 直接删除数据库,不检查是否存在
或
DROP DATABASE [IF EXISTS] <database_name>;
-- 直接删除数据库,不检查是否存在
mysql> DROP DATABASE RUNOOB;
-- 删除数据库,如果存在的话
DROP DATABASE IF EXISTS RUNOOB;
MySQL 选择数据库
USE database_name;
mysql -u your_username -p -D your_database
-D 参数用于指定要选择的数据库。