具体信息详见条例与条款。
MySQL 指南
一、前言
1.1 文档背景
本人有随手记录知识点的习惯,比如在遇见一些问题的时候顺手记录错误与解决方案等等。想想存着也是存着,提供课程之余也顺便发出来分享给宝子们。
本文档的完善程度较低,于未来的一段时间内仍有较大改动,敬请期待。
1.2 下载与安装
Windows: 直接访问官网 进行下载安装。
MacOS:
- 使用 Homebrew 安装:
- 安装 Homebrew: 终端输入
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"回车等待安装完成; - 使用 Homebrew 安装 MySQL:终端输入
brew install mysql回车等待安装完成; - 使用 Homebrew 启动 MySQL:终端输入
brew service start mysql以一键配置 LaunchAgent,或是使用mysql.server start启动。
- 安装 Homebrew: 终端输入
Linux:
- 基于 Debian 的系统,如 Ubuntu:
- 更新包索引:
sudo apt update; - 安装 MySQL 服务:
sudo apt install mysql-server; - 启动 MySQL 服务:
sudo systemctl start mysql.service。
- 更新包索引:
- 基于 RPM 的系统,如 CentOS:
- CentOS v8 之后的版本:使用 dnf 安装:
sudo dnf install mysql-server(可选module install参数); - CentOS v7 及之前版本:使用 yum 安装:
sudo yum install mysql-server。
- CentOS v8 之后的版本:使用 dnf 安装:
1.3 常见命令
基本命令表
Windows
- 启动 MySQL:
net start mysql - 停止 MySQL:
net stop mysql - 重启 MySQL:
net restart mysql - 初始化数据库:
.\mysqld --initialize --console(需cd定位到目录下) - 安装 MySQL 并命名服务名称:
.mysqld --install server-name(仅 Windows)
MacOS
- 启动 MySQL:
brew service start mysql或mysql.server start - 停止 MySQL:
brew service stop mysql或mysql.server stop - 重启 MySQL:
brew service restart mysql或mysql.server restart - 初始化数据库:
mysqld --initialize
Linux
- 启动 MySQL:
sudo systemctl start mysqld - 停止 MySQL:
sudo systemctl stop mysqld - 重启 MySQL:
sudo systemctl restart mysqld - 初始化数据库:
sudo mysqld --initialize
登录与权限
代码已复制!
mysql -u root -p
- 功能:登录至 root
代码已复制!
FLUSH PRIVILEGES;
- 功能:刷新权限(用户已登录)
代码已复制!
SHOW PLUGINS;
- 功能:查看插件列表
代码已复制!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- 功能:重设密码(使用
mysql_native_password插件)
二、流程
2.1 安装与配置 MySQL
-
安装方式(以8.3为例)
- Windows:
下载 MySQL 文件,解压到H:\mysql,编辑my.ini,配置系统路径到该目录下 - MacOS:
在终端输入:brew install mysql@8.3 - CentOS:
使用 DNF 安装:sudo dnf module install mysql:8.3
- Windows:
-
查看安装目录
MacOS / Linux 可直接使用:
which mysql,查看可执行文件路径,一般无需修改,直接使用brew service ...命令即可。如需要,请编辑
support-files目录下的mysql.server文件。 -
配置环境变量
- Windows:
在系统变量Path后追加 MySQL 目录,如H:\mysql - MacOS(Homebrew 安装):
一般自动配置,无需手动修改。 - 手动修改示例(MacOS / Linux):
代码已复制!
# 在 ~/.zshrc 或 ~/.bashrc 中添加 export PATH=${PATH}:/usr/local/mysql/bin/
- Windows:
-
Windows 额外步骤
- 清空
data目录 - 用管理员权限打开终端,执行:
代码已复制!
.\mysqld --install - 如需自定义服务名,可在
--install后加空格与服务名,否则默认服务名为mysql。 - 目前 MacOS 没有类似服务名机制。
- 清空
2.2 配置初始数据库信息
-
初始化数据库
-
Windows:
代码已复制!
mysqld --initialize --console记住输出中的随机密码。
-
MacOS:
先进入support-files目录:代码已复制!
cd path/to/support-files mysql --initialize --user=mysql同样记住随机密码。
-
-
运行 MySQL 服务
-
Windows:
代码已复制!
net start mysql此处的
mysql是你的服务名,如果在 2.1 中自定义过服务名,这里也要改成对应名称。 -
MacOS:
代码已复制!
# 使用 brew service 启动 brew service start mysql # 旧版启动方法(不会注册服务,开机不会自启动) mysql.server start
-
-
登录并设置密码
初次安装:执行 mysql_secure_installation 并按提示操作。
登录:
代码已复制!
mysql -u root -p
登录后依次执行:
代码已复制!
-- 设置你自己的密码 SET PASSWORD = 'your-password'; -- 让 root 密码不过期 ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; -- 刷新权限 FLUSH PRIVILEGES;
其中 your-password 是你自己想设置的密码。
2.3 启动并管理 MySQL
- 若之前已执行过
net start mysql,且设置为开机自启动,则系统启动后会自动运行。 - 在图形化客户端(如 Navicat)中:
- 创建连接,类型选择:MySQL
- 起一个连接名,例如:
Strapi(与 MySQL 服务名称无关) - 输入在 2.2 中设置的账号和密码,测试连接
- 成功连接后,新建数据库,如:
tutorial-strapi
2.4 手动创建数据库以连接 Strapi
-
打开终端:
代码已复制!
mysql -u root -p回车后输入密码,进入 MySQL 控制台(提示符变为
mysql>)。 -
创建数据库:
代码已复制!
CREATE DATABASE your-database-name;将
your-database-name替换为你的实际数据库名。 -
检查 root 用户是否使用
mysql_native_password插件:代码已复制!
SELECT user, plugin FROM mysql.user WHERE user IN ('root'); -
如需设置 / 确认密码插件与密码,依次执行:
代码已复制!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password'; FLUSH PRIVILEGES; QUIT;其中
your-password为你之前设置的密码。
三、障碍解决
3.1 忘记密码
a. 启动 MySQL 时加参数跳过权限表:
代码已复制!
mysqld --skip-grant-tables
b. 然后到 ./bin 目录,运行:
代码已复制!
mysql
依次输入并回车:
代码已复制!
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'mynewpass';
此处 mynewpass 是你的新密码。
代码已复制!
QUIT;
c. 重新正常启动 MySQL,用以下方式登录并验证密码:
代码已复制!
mysql -u root -p
- MacOS 上建议使用:
代码已复制!
mysql -h localhost -u root -p
3.2 Strapi / 开发环境启动报错
报错类似:
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
解决办法:进入 MySQL 控制台,执行:
代码已复制!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; FLUSH PRIVILEGES;
yourpassword 为你希望设置的密码。
3.3 Linux 中报错
Starting MySQL.. ERROR! The server quit without updating PID file
处理方法:查看并杀掉残留进程:
代码已复制!
ps -ef | grep mysql # 找到相关进程后使用 kill 或 kill -9 结束
3.4 Linux 中权限不足(Permission denied){#permission-denied}
执行以下命令修复权限(以 Homebrew 路径为例):
代码已复制!
# 创建错误日志文件目录(如果不存在) mkdir -p /home/linuxbrew/.linuxbrew/var/mysql # 修改整个 MySQL 数据目录的所有权 sudo chown -R $(whoami) /home/linuxbrew/.linuxbrew/var/mysql # 设置正确的权限 chmod -R 755 /home/linuxbrew/.linuxbrew/var/mysql # 创建错误日志文件并设置正确权限 touch /home/linuxbrew/.linuxbrew/var/mysql/VM-4-2-opencloudos.err chmod 644 /home/linuxbrew/.linuxbrew/var/mysql/VM-4-2-opencloudos.err
3.5 Strapi 连接报错(认证相关){#connection-error}
在 MySQL 控制台中执行:
代码已复制!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES;
四、导出及导入
4.1 登录
代码已复制!
mysql -u root -p
登录后如需查看所有数据库:
代码已复制!
SHOW DATABASES;
4.2 导出
使用 mysqldump 导出:
代码已复制!
mysqldump -u root -p database_name > backup_file.sql
database_name:要导出的数据库名backup_file.sql:导出生成的 SQL 备份文件名
4.3 导入
方式一:直接命令行导入
代码已复制!
mysql -u root -p database_name < dump_file.sql
方式二:登录 MySQL 后导入
代码已复制!
# 先登录到 MySQL mysql -u root -p # 在 MySQL 提示符下执行 mysql> USE database_name; mysql> SOURCE /path/to/dump_file.sql;
4.4 如用 brew 安装
代码已复制!
# 使用 brew service 启动 brew service start mysql # 或旧版手动运行: mysql.server start # 初次登录 mysql -u root # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'mynewpass'; # 修改本地密码插件为 mysql_native_password ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mynewpass'; # 刷新特权 FLUSH PRIVILEGES; # 创建数据库 CREATE DATABASE yourdbname; # 退出 QUIT; -- 或 EXIT # 按需导入数据库 mysql -u root -p database_name < dump_file.sql
4.5 添加到 Linux 系统启动
- 创建 systemd 服务文件:
代码已复制!
sudo vim /etc/systemd/system/mysql.service
在文件中写入:
代码已复制!
[Unit] Description=MySQL Server After=network.target [Service] Type=forking User=mysql ExecStart=/usr/local/mysql/bin/mysqld_safe --pid-file=/var/run/mysqld/mysqld.pid Restart=always RestartSec=3 OOMScoreAdjust=-1000 [Install] WantedBy=multi-user.target
- 使用命令行启用服务:
代码已复制!
# 重新加载 systemd 配置 sudo systemctl daemon-reload # 启用服务(开机自启) sudo systemctl enable mysql # 启动服务 sudo systemctl start mysql # 检查状态 sudo systemctl status mysql

