From e29b1cef51290b75fed447be6c926ca3ba711cd4 Mon Sep 17 00:00:00 2001 From: blade <8019068@qq.com> Date: Mon, 15 Sep 2025 17:42:49 +0800 Subject: [PATCH] add mysql install progressing --- sql/backup_restore.txt | 4 + sql/mysql_install.md | 236 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 240 insertions(+) create mode 100644 sql/backup_restore.txt create mode 100644 sql/mysql_install.md diff --git a/sql/backup_restore.txt b/sql/backup_restore.txt new file mode 100644 index 0000000..a256091 --- /dev/null +++ b/sql/backup_restore.txt @@ -0,0 +1,4 @@ +mysqldump -u xch -p --single-transaction --quick --routines --triggers --events --default-character-set=utf8mb4 okx | gzip > ./okx_backup_20250915.sql.gz + +mysql -u xch -p -e "CREATE DATABASE okx;" +gunzip < ./okx_backup_20250915.sql.gz | mysql -u xch -p okx \ No newline at end of file diff --git a/sql/mysql_install.md b/sql/mysql_install.md new file mode 100644 index 0000000..f7a2b98 --- /dev/null +++ b/sql/mysql_install.md @@ -0,0 +1,236 @@ +# MySql安装 +以下是针对 Ubuntu 系统,在 `/mnt/0/mysql/` 目录下正确安装 MySQL 并解决权限和路径问题的完整步骤: + + +### 步骤 1:准备目录与依赖 +```bash +# 创建安装主目录及子目录(保持MySQL原生结构) +sudo mkdir -p /mnt/0/mysql/{data,log,conf} +sudo chown -R $USER:$USER /mnt/0/mysql/ +sudo chmod -R 755 /mnt/0/mysql/ + +# 安装Ubuntu必需依赖 +sudo apt update +sudo apt install -y libaio1 libncurses6 +``` + + +### 步骤 2:下载并正确放置MySQL二进制包 +```bash +# 下载MySQL 8.0二进制包(以8.0.36为例,可替换最新版本) +wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz + +# 解压到当前目录 +tar -xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz + +# 关键步骤:将解压后的所有文件直接移动到/mnt/0/mysql/(保持原生目录结构) +# 注意:解压目录中的bin、share等文件夹将直接成为/mnt/0/mysql/的子目录 +mv mysql-8.0.36-linux-glibc2.28-x86_64/* /mnt/0/mysql/ +``` + +此时目录结构应为(正确结构): +``` +/mnt/0/mysql/ +├── bin/ # MySQL可执行文件(mysqld、mysql等) +├── share/ # 错误消息、字符集文件(包含errmsg.sys) +├── lib/ # 依赖库 +├── data/ # 数据存储目录(后续使用) +├── conf/ # 配置文件目录 +└── log/ # 日志目录 +``` + + +### 步骤 3:创建MySQL配置文件 +```bash +nano /mnt/0/mysql/conf/my.cnf +``` + +添加以下配置(路径需与实际目录结构匹配): +```ini +[mysqld] +# 安装主目录(直接指向/mnt/0/mysql) +basedir = /mnt/0/mysql +# 数据目录 +datadir = /mnt/0/mysql/data +# socket文件路径 +socket = /mnt/0/mysql/mysql.sock +# 错误日志 +log-error = /mnt/0/mysql/log/error.log +# PID文件 +pid-file = /mnt/0/mysql/mysql.pid +port = 3306 +user = mysql +# 允许远程连接(可选,生产环境谨慎开启) +bind-address = 0.0.0.0 +``` + +保存退出(`Ctrl+O` → 回车 → `Ctrl+X`)。 + + +### 步骤 4:创建MySQL系统用户并修复权限链 +```bash +# 创建mysql用户组和用户(禁止登录shell) +sudo groupadd mysql +sudo useradd -r -g mysql -s /bin/false mysql + +# 关键:修复权限链(包括父目录) +sudo chmod 755 /mnt/0 # 确保父目录可访问 +sudo chown -R mysql:mysql /mnt/0/mysql/ # 递归设置所有权 +sudo chmod 700 /mnt/0/mysql/data/ # 数据目录权限(仅所有者可访问) +``` + + +### 步骤 5:初始化MySQL数据库(解决路径和权限问题) +```bash +# 清除可能的残留文件(若之前初始化失败) +sudo rm -rf /mnt/0/mysql/data/* + +# 执行初始化(路径参数必须正确) +sudo /mnt/0/mysql/bin/mysqld --initialize --user=mysql \ + --basedir=/mnt/0/mysql \ + --datadir=/mnt/0/mysql/data +``` + +初始化成功后,记录临时root密码: +```bash +cat /mnt/0/mysql/log/error.log | grep 'temporary password' +``` + + +### 步骤 6:配置环境变量(可选) +```bash +echo 'export PATH=$PATH:/mnt/0/mysql/bin' >> ~/.bashrc +source ~/.bashrc +``` + + +### 步骤 7:注册为systemd服务 +```bash +sudo nano /etc/systemd/system/mysql.service +``` + +添加以下内容: +```ini +[Unit] +Description=MySQL Server +After=network.target + +[Service] +User=mysql +Group=mysql +ExecStart=/mnt/0/mysql/bin/mysqld --defaults-file=/mnt/0/mysql/conf/my.cnf +Restart=always +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target +``` + +刷新配置并启动: +```bash +sudo systemctl daemon-reload +sudo systemctl start mysql +sudo systemctl enable mysql # 开机自启 +``` + + +### 步骤 8:验证安装 +```bash +# 检查服务状态 +sudo systemctl status mysql # 应显示active (running) + +# 登录MySQL验证 +mysql -u root -p -S /mnt/0/mysql/mysql.sock +# 输入临时密码后修改密码 +ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123'; +FLUSH PRIVILEGES; +``` + +```bash +ln -s /mnt/0/mysql/mysql.sock /tmp/mysql.sock +chown mysql:mysql /tmp/mysql.sock +``` + + +### 关键修复点说明 +1. **目录结构修正**:将MySQL解压文件直接放在 `/mnt/0/mysql/` 下,避免多嵌套一层 `bin` 目录,确保 `share/errmsg.sys` 等核心文件能被正确找到。 +2. **权限链修复**:不仅设置 `/mnt/0/mysql/` 的权限,还确保父目录 `/mnt/0` 有执行权限(`755`),解决 "Permission denied" 问题。 +3. **路径参数修正**:`--basedir` 指向 `/mnt/0/mysql`(主目录),而非子目录,与MySQL原生目录结构匹配。 + +按照以上步骤操作,可彻底解决之前出现的路径错误和权限问题,确保MySQL正常安装和运行。 + +# 创建账号与数据库 +要创建 MySQL 管理员账号 `xch` 并创建名为 `okx` 的数据库(schema),可以按照以下步骤操作: + +### 步骤 1:登录 MySQL 服务器 +首先使用 root 账号登录 MySQL: +```bash +# 如果配置了环境变量 +mysql -u root -p + +# 如果未配置环境变量,使用完整路径和 socket +/mnt/0/mysql/bin/bin/mysql -u root -p -S /mnt/0/mysql/mysql.sock +``` +输入 root 密码后进入 MySQL 命令行界面。 + + + +### 步骤 2:创建管理员账号 `xch` +执行以下 SQL 命令创建具有全部权限的管理员账号 `xch`: + +```sql +-- 创建账号并允许本地连接(仅本机可登录) +-- CREATE USER 'xch'@'localhost' IDENTIFIED BY '你的密码'; + +-- 授予管理员权限(所有数据库的所有操作权限) +-- GRANT ALL PRIVILEGES ON *.* TO 'xch'@'localhost' WITH GRANT OPTION; + +-- 如果需要允许远程连接(谨慎使用,生产环境建议限制IP) +CREATE USER 'xch'@'%' IDENTIFIED BY '你的密码'; +GRANT ALL PRIVILEGES ON *.* TO 'xch'@'%' WITH GRANT OPTION; + +-- 刷新权限使配置生效 +FLUSH PRIVILEGES; +``` + +说明: +- `'xch'@'localhost'` 表示仅允许从本机登录 +- `'xch'@'%'` 表示允许从任何 IP 登录(不推荐直接使用,可替换为具体 IP 如 `'192.168.1.%'`) +- `WITH GRANT OPTION` 允许该账号授予权限给其他用户 + + +### 步骤 3:创建 `okx` 数据库(schema) +执行以下命令创建名为 `okx` 的数据库: +```sql +-- 创建数据库,指定字符集为 utf8mb4(支持 emoji 和所有 Unicode 字符) +CREATE DATABASE IF NOT EXISTS okx + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; +``` + +### 步骤 4:验证配置 +```sql +-- 查看所有数据库(确认 okx 已创建) +SHOW DATABASES; + +-- 查看用户列表(确认 xch 已创建) +SELECT user, host FROM mysql.user; +``` + +### 步骤 5:退出 MySQL +```sql +exit; +``` + + +### 测试新账号登录 +使用新创建的 `xch` 账号登录验证: +```bash +# 本地登录 +mysql -u xch -p + +# 登录后查看是否有权限访问 okx 数据库 +USE okx; +``` + +这样就完成了管理员账号 `xch` 的创建和 `okx` 数据库的创建。`xch` 账号拥有与 root 类似的全部权限,可以管理所有数据库。 \ No newline at end of file