crypto_quant/sql/mysql_install.md

236 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 类似的全部权限,可以管理所有数据库。