Ubuntu 离线环境 [MySQL 安装配置 + 目录说明 + 常用功能 + 命令]


一、离线安装配置 MySQL
1. 前提准备(核心文件)
下载文件:
MySQL 离线 deb 包集合(匹配 Ubuntu 版本,如 20.04,建议从 MySQL 官网 下载 “Debian Linux” 对应版本,含 mysql-common、mysql-client-core、mysql-server 等依赖包)
依赖补充包(若有缺失:libaio1、libmecab2、libtinfo5,从 Ubuntu 系统镜像 pool 目录获取)
上传路径:将所有 deb 包传到服务器 /opt/mysql-offline 目录
2. 卸载旧版本(避免冲突)
# 停止旧 MySQL 服务(若存在)
sudo systemctl stop mysql 2>/dev/null
# 卸载旧版本
sudo apt purge -y mysql-server mysql-client mysql-common
# 清理残留文件
sudo rm -rf /var/lib/mysql /etc/mysql /var/log/mysql

3. 安装 MySQL(deb 包离线部署)
进入 deb 包目录,按依赖顺序安装(核心包需优先):
cd /opt/mysql-offline
# 1. 安装基础依赖包(若缺失)
sudo dpkg -i libaio1_*.deb libmecab2_*.deb libtinfo5_*.deb 2>/dev/null
# 2. 安装 MySQL 核心包(顺序:common → client-core → client → server)
sudo dpkg -i mysql-common_*.deb
sudo dpkg -i mysql-client-core-8.0_*.deb  # 版本号按实际包名调整
sudo dpkg -i mysql-client-8.0_*.deb
sudo dpkg -i mysql-server-8.0_*.deb
# 3. 修复可能的依赖缺失(离线环境用 --force-depends 跳过非关键依赖)
sudo dpkg --configure -a --force-depends

初始化配置(Ubuntu 自动初始化,需设置 root 密码):
# 查看自动生成的临时密码(MySQL 8.0+ 默认生成,存于日志)
sudo grep 'temporary password' /var/log/mysql/error.log
# 登录 MySQL 并修改密码(首次登录需用临时密码)
mysql -u root -p
# 输入临时密码后,执行修改密码命令(密码需含大小写、数字、特殊符号)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL@123456';
# 刷新权限
FLUSH PRIVILEGES;
exit;

验证安装:
# 查看服务状态
sudo systemctl status mysql
# 登录验证
mysql -u root -p  # 输入新密码,能进入 MySQL 命令行即成功


二、MySQL 目录及文件说明(Ubuntu 默认路径)
/etc/mysql/:核心配置目录
my.cnf:主配置文件(默认引用 /etc/mysql/mysql.conf.d/ 下的配置)
mysql.conf.d/mysqld.cnf:服务端配置(端口、数据目录、日志路径等,关键参数:port=3306、datadir=/var/lib/mysql)
conf.d/mysql.cnf:客户端配置(默认字符集、连接超时等)
/var/lib/mysql/:数据存储目录(核心目录,需谨慎操作)
数据库文件夹:每个数据库对应一个文件夹(如 mysql 系统数据库、test 测试数据库)
ibdata1、ib_logfile0/1:InnoDB 存储引擎数据文件和日志文件
auto.cnf:MySQL 实例唯一标识文件
/var/log/mysql/:日志目录
error.log:错误日志(启动失败、SQL 错误等关键信息,排查问题核心)
general.log:通用查询日志(记录所有 SQL 操作,默认关闭,需手动开启)
slow.log:慢查询日志(记录执行时间超过阈值的 SQL,优化性能用)
/usr/bin/:客户端命令目录(常用命令存放处)
mysql:MySQL 客户端登录命令
mysqladmin:数据库管理命令(如修改密码、关闭服务)
mysqldump:数据备份命令
mysqlimport:数据导入命令
/usr/sbin/mysqld:MySQL 服务端程序(服务启动的核心执行文件)

三、MySQL 常用功能(Ubuntu 离线适配)
1. 数据库与用户管理(基础操作)
创建数据库:
# 登录 MySQL 后执行
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  # 支持中文,避免乱码

创建用户并授权(离线环境多为本地访问,若需远程需额外配置):
# 创建用户(user1,允许本地访问,密码 User@123)
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'User@123';
# 授权用户操作 mydb 数据库的所有权限
GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'localhost';
# 刷新权限
FLUSH PRIVILEGES;

删除用户与数据库:
DROP USER 'user1'@'localhost';
DROP DATABASE IF EXISTS mydb;

2. 数据备份与恢复(离线环境关键需求)
全量备份(备份所有数据库,含结构和数据):
# 本地执行,备份到 /opt/mysql-backup 目录(需提前创建)
sudo mkdir -p /opt/mysql-backup
mysqldump -u root -p --all-databases --lock-all-tables > /opt/mysql-backup/all-db_$(date +%Y%m%d).sql
# 输入 root 密码,生成带日期的备份文件

单库备份(仅备份 mydb 数据库):
mysqldump -u root -p mydb --lock-tables > /opt/mysql-backup/mydb_$(date +%Y%m%d).sql

数据恢复(从备份文件恢复 mydb 数据库):
# 先创建空数据库(若数据库已删除)
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 执行恢复(备份文件路径按实际调整)
mysql -u root -p mydb < /opt/mysql-backup/mydb_20251110.sql

3. 远程访问配置(离线环境跨机器访问)
修改 MySQL 配置,允许远程连接:
# 编辑服务端配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到 bind-address = 127.0.0.1,改为 0.0.0.0(允许所有IP访问,或指定特定IP)
bind-address = 0.0.0.0
# 保存后重启服务
sudo systemctl restart mysql

授权远程用户(允许 user1 从 192.168.1.0/24 网段访问):
mysql -u root -p
CREATE USER 'user1'@'192.168.1.%' IDENTIFIED BY 'User@123';
GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'192.168.1.%';
FLUSH PRIVILEGES;
exit;

开放 Ubuntu 防火墙 3306 端口:
sudo ufw allow 3306/tcp
sudo ufw reload

4. 字符集配置(避免中文乱码)
# 编辑主配置文件
sudo vim /etc/mysql/my.cnf
# 在 [mysqld] 段添加
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 在 [client] 段添加(若没有则新建)
[client]
default-character-set = utf8mb4
# 重启服务生效
sudo systemctl restart mysql
# 验证字符集(登录 MySQL 后执行)
show variables like '%character%';


四、MySQL 常用命令(Ubuntu 离线专用)
1. 服务管理(系统层面)
启动服务:sudo systemctl start mysql
停止服务:sudo systemctl stop mysql
重启服务:sudo systemctl restart mysql
查看状态:sudo systemctl status mysql(显示 active 则运行正常)
设置开机自启:sudo systemctl enable mysql
关闭开机自启:sudo systemctl disable mysql
2. 客户端登录与退出(操作核心)
本地登录(root 用户):mysql -u root -p(输入密码后进入命令行)
指定端口登录(若端口修改为 3307):mysql -u root -p -P 3307
远程登录(从 192.168.1.10 登录):mysql -u user1 -p -h 192.168.1.20(h 后为 MySQL 服务器 IP)
退出登录:exit 或 quit
3. 数据库与表操作(SQL 命令,需在 MySQL 命令行执行)
查看所有数据库:show databases;
切换数据库:use mydb;(切换到 mydb 数据库)
查看当前数据库所有表:show tables;
查看表结构:desc mytable;(mytable 为表名)
执行 SQL 文件(导入数据):source /opt/mysql-backup/mydb.sql;(文件路径按实际调整)
4. 日志与状态查看(排查问题用)
查看错误日志(本地命令):sudo tail -f /var/log/mysql/error.log(实时查看,按 Ctrl+C 退出)
查看 MySQL 版本(客户端命令行):select version();
查看当前连接用户:select user();
查看服务器状态:show status;(显示连接数、查询数等统计信息)
5. 权限与密码操作
修改 root 密码(客户端命令行):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@456';
FLUSH PRIVILEGES;

忘记 root 密码(离线重置):
停止服务:sudo systemctl stop mysql
跳过权限验证启动:sudo mysqld_safe --skip-grant-tables &
无密码登录:mysql -u root
重置密码:
use mysql;
UPDATE user SET authentication_string='' WHERE user='root';  # 清空旧密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ResetPass@789';
FLUSH PRIVILEGES;
exit;

重启正常服务:sudo systemctl restart mysql

五、注意事项
权限管理:/var/lib/mysql 目录默认属主为 mysql:mysql,不要随意修改权限,否则服务无法启动
数据安全:离线环境需定期手动备份数据(用 mysqldump 命令),避免数据丢失
防火墙:除了 MySQL 配置远程访问,还需开放 Ubuntu 防火墙 3306 端口,否则远程无法连接
版本兼容:deb 包需严格匹配 Ubuntu 系统版本(如 20.04 对应 bionic 版本包),避免安装失败
启动失败排查:优先查看 /var/log/mysql/error.log 日志,常见原因:数据目录权限错误、端口被占用、配置文件语法错误

相关推荐

发表评论

路人甲

网友评论(0)