crypto_quant/sql/mysql_install.md

8.1 KiB
Raw Permalink Blame History

MySql安装

以下是针对 Ubuntu 系统,在 /mnt/0/mysql/ 目录下正确安装 MySQL 并解决权限和路径问题的完整步骤:

步骤 1准备目录与依赖

# 创建安装主目录及子目录保持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二进制包

# 下载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配置文件

nano /mnt/0/mysql/conf/my.cnf

添加以下配置(路径需与实际目录结构匹配):

[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系统用户并修复权限链

# 创建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数据库解决路径和权限问题

# 清除可能的残留文件(若之前初始化失败)
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密码

cat /mnt/0/mysql/log/error.log | grep 'temporary password'

步骤 6配置环境变量可选

echo 'export PATH=$PATH:/mnt/0/mysql/bin' >> ~/.bashrc
source ~/.bashrc

步骤 7注册为systemd服务

sudo nano /etc/systemd/system/mysql.service

添加以下内容:

[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

刷新配置并启动:

sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql  # 开机自启

步骤 8验证安装

# 检查服务状态
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;
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" 问题。 sudo chown -R mysql:mysql /mnt/0/mysql sudo chmod -R 755 /mnt/0/mysql
  3. 路径参数修正--basedir 指向 /mnt/0/mysql主目录而非子目录与MySQL原生目录结构匹配。

按照以上步骤操作可彻底解决之前出现的路径错误和权限问题确保MySQL正常安装和运行。

创建账号与数据库

要创建 MySQL 管理员账号 xch 并创建名为 okx 的数据库schema可以按照以下步骤操作

步骤 1登录 MySQL 服务器

首先使用 root 账号登录 MySQL

# 如果配置了环境变量
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

-- 创建账号并允许本地连接(仅本机可登录)
-- 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 的数据库:

-- 创建数据库,指定字符集为 utf8mb4支持 emoji 和所有 Unicode 字符)
CREATE DATABASE IF NOT EXISTS okx 
  CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;

步骤 4验证配置

-- 查看所有数据库(确认 okx 已创建)
SHOW DATABASES;

-- 查看用户列表(确认 xch 已创建)
SELECT user, host FROM mysql.user;

步骤 5退出 MySQL

exit;

测试新账号登录

使用新创建的 xch 账号登录验证:

# 本地登录
mysql -u xch -p

# 登录后查看是否有权限访问 okx 数据库
USE okx;

这样就完成了管理员账号 xch 的创建和 okx 数据库的创建。xch 账号拥有与 root 类似的全部权限,可以管理所有数据库。

服务器搬迁后mysql不正常怎么办

如果3306端口没有生效 netstat -tulpn | grep 3306 无任何返回信息:

关键:修复权限链(包括父目录)

sudo chmod 755 /mnt/0 # 确保父目录可访问 sudo chown -R mysql:mysql /mnt/0/mysql/ # 递归设置所有权 sudo chmod 700 /mnt/0/mysql/data/ # 数据目录权限(仅所有者可访问)

然后重启mysql
systemctl restart mysql
查看mysql状态
systemctl status mysql
返回类似信息:
(base) root@lckj:/mnt/0/mysql/conf# systemctl status mysql
● mysql.service - MySQL Server
     Loaded: loaded (/etc/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-10-16 05:22:34 UTC; 4min 56s ago
   Main PID: 590936 (mysqld)
      Tasks: 39 (limit: 57298)
     Memory: 380.4M
        CPU: 1.294s
     CGroup: /system.slice/mysql.service
             └─590936 /mnt/0/mysql/bin/mysqld --defaults-file=/mnt/0/mysql/conf/my.cnf
             
再执行netstat -tulpn | grep 3306
返回类似信息即可:
(base) root@lckj:/mnt/0/mysql/conf# netstat -tulpn | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      590936/mysqld       
tcp6       0      0 :::33060                :::*                    LISTEN      590936/mysqld