MySQL的初步认识和安装
·
一、MySQL初步认识
1. 什么是MySQL
MySQL 是一个开源的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。
text
MySQL 特点: ├── 开源免费(也有商业版) ├── 高性能、高可靠性 ├── 跨平台支持(Windows、Linux、macOS) ├── 支持多种存储引擎 ├── 支持事务处理 ├── 支持主从复制 ├── 支持分区和分表 └── 提供丰富的API接口
2. 数据库基本概念
sql
-- 数据库术语对照 MySQL术语 → 说明 ---------------------------------------- 数据库(Database) → 存储数据的容器 表(Table) → 数据的矩阵结构 行(Row) → 一条记录 列(Column) → 一个字段 主键(Primary Key) → 唯一标识一条记录 外键(Foreign Key) → 表与表之间的关联 索引(Index) → 提高查询速度 视图(View) → 虚拟表 存储过程(Procedure) → 预编译的SQL语句 触发器(Trigger) → 自动执行的SQL
3. MySQL版本发展
text
MySQL版本历史: 5.5 (2010年) → InnoDB成为默认引擎 5.6 (2013年) → 全文索引、性能提升 5.7 (2015年) → JSON支持、GIS支持 8.0 (2018年) → 窗口函数、CTE、角色管理 8.1+ (2023年) → 持续更新,性能优化 版本选择建议: ├── 新项目:MySQL 8.0 或更高 ├── 旧项目兼容:MySQL 5.7 ├── 生产环境:选择最新稳定版 └── 学习环境:8.0 社区版
4. MySQL与MariaDB关系
text
MySQL (1995) - 被Sun收购 (2008) - 被Oracle收购 (2010)
↓
MariaDB (2009) - MySQL创始人创建,完全兼容MySQL
↓
分支关系:
├── MySQL:Oracle公司维护
├── MariaDB:社区维护
├── Percona Server:Percona公司维护
└── 兼容性:MariaDB兼容MySQL,可无缝切换
二、MySQL应用场景
1. 典型应用场景
text
1. Web网站 ├── 电商网站:用户、商品、订单数据 ├── 内容管理:文章、分类、评论 ├── 社交平台:用户关系、动态 └── 论坛/BBS:帖子、回复 2. 企业应用 ├── ERP系统 ├── CRM系统 ├── OA系统 └── 进销存管理 3. 数据分析 ├── 数据仓库 ├── 日志分析 └── 商业智能 4. 嵌入式应用 ├── 移动APP ├── 桌面软件 └── 物联网设备
2. 适用规模
sql
-- MySQL可以支持的规模 单表记录数:百万到亿级 数据库大小:GB到TB级 并发连接:数百到数千 读写比例:读多写少 -- 性能指标(参考) 每秒查询数(QPS):数千到数万 每秒事务数(TPS):数百到数千 响应时间:毫秒级
三、Linux环境安装MySQL
1. 系统要求检查
bash
# 1. 检查操作系统 cat /etc/os-release uname -a # 2. 检查内存(推荐至少1GB) free -h # 3. 检查磁盘空间(推荐至少10GB) df -h # 4. 检查端口(3306是否被占用) netstat -tlnp | grep 3306 ss -tlnp | grep 3306 # 5. 检查防火墙 systemctl status firewalld iptables -L -n # 6. 关闭SELinux(可选) getenforce setenforce 0 # 临时关闭 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭
2. 安装方式选择
bash
# MySQL安装方式对比 1. 包管理器安装:简单、易维护(yum/apt) 2. 官方仓库安装:版本新、更新方便 3. 二进制安装:灵活、可定制 4. 源码编译安装:高度定制、性能优化 5. Docker安装:快速部署、隔离性好 # 本文主要介绍前两种方式
3. CentOS/RHEL系统安装
3.1 使用官方YUM仓库安装
bash
# 1. 添加MySQL官方YUM仓库 # CentOS 7 yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm # CentOS 8 yum install -y https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm # CentOS 9 yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm # 2. 查看可用的MySQL版本 yum repolist all | grep mysql # 3. 选择版本(默认8.0,如需5.7请切换) # 禁用8.0,启用5.7 yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community # 4. 安装MySQL yum install -y mysql-community-server # 5. 安装完成后查看版本 mysql --version
3.2 使用EPEL仓库安装(MariaDB)
bash
# 1. 添加EPEL仓库 yum install -y epel-release # 2. 安装MariaDB yum install -y mariadb-server mariadb # 3. 启动服务 systemctl start mariadb systemctl enable mariadb
3.3 二进制安装(通用Linux)
bash
# 1. 下载MySQL二进制包 cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz # 2. 解压 tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql # 3. 创建mysql用户和组 groupadd mysql useradd -r -g mysql -s /bin/false mysql # 4. 创建数据目录 mkdir -p /data/mysql chown -R mysql:mysql /data/mysql chmod 750 /data/mysql # 5. 初始化数据库 cd /usr/local/mysql bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql # 记录初始密码(显示在输出中) # [Note] A temporary password is generated for root@localhost: xxxxxxxx # 6. 配置文件 cat > /etc/my.cnf << 'EOF' [client] port = 3306 socket = /tmp/mysql.sock default-character-set = utf8mb4 [mysql] prompt="\\u@\\h [\\d]> " no-auto-rehash default-character-set = utf8mb4 [mysqld] user = mysql port = 3306 basedir = /usr/local/mysql datadir = /data/mysql socket = /tmp/mysql.sock pid-file = /data/mysql/mysql.pid log-error = /data/mysql/error.log character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init-connect = 'SET NAMES utf8mb4' # 连接设置 max_connections = 500 max_connect_errors = 100 wait_timeout = 600 interactive_timeout = 28800 # 存储引擎 default-storage-engine = InnoDB # InnoDB设置 innodb_buffer_pool_size = 1G innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 2 innodb_file_per_table = 1 # 字符集 skip-character-set-client-handshake EOF # 7. 设置systemd服务 cat > /etc/systemd/system/mysqld.service << 'EOF' [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Service] User=mysql Group=mysql Type=forking PIDFile=/data/mysql/mysql.pid ExecStart=/usr/local/mysql/support-files/mysql.server start ExecStop=/usr/local/mysql/support-files/mysql.server stop ExecReload=/bin/kill -HUP $MAINPID TimeoutSec=300 PrivateTmp=true [Install] WantedBy=multi-user.target EOF # 8. 添加环境变量 echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile source /etc/profile # 9. 启动服务 systemctl daemon-reload systemctl start mysqld systemctl enable mysqld
4. Ubuntu/Debian系统安装
4.1 使用APT仓库安装
bash
# 1. 更新包索引 apt update # 2. 安装MySQL 8.0(Ubuntu 20.04+默认) apt install -y mysql-server # 3. 或者添加MySQL官方APT仓库 # 下载APT仓库配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb # 安装仓库配置(会提示选择版本) dpkg -i mysql-apt-config_0.8.24-1_all.deb # 更新包索引 apt update # 安装MySQL apt install -y mysql-server # 4. 安装MariaDB apt install -y mariadb-server
4.2 使用Percona仓库
bash
# 添加Percona仓库 wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb dpkg -i percona-release_latest.generic_all.deb apt update # 安装Percona Server apt install -y percona-server-server
5. Docker安装MySQL
bash
# 1. 安装Docker
# CentOS
yum install -y docker-ce
# Ubuntu
apt install -y docker.io
# 2. 启动Docker
systemctl start docker
systemctl enable docker
# 3. 拉取MySQL镜像
docker pull mysql:8.0
docker pull mysql:5.7
# 4. 运行MySQL容器
# 简单运行
docker run -d \
--name mysql8 \
-e MYSQL_ROOT_PASSWORD=root123 \
-p 3306:3306 \
mysql:8.0
# 带数据卷的完整运行
docker run -d \
--name mysql8 \
--restart always \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=testdb \
-e MYSQL_USER=testuser \
-e MYSQL_PASSWORD=testpass \
-p 3306:3306 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--max_connections=500
# 5. 进入容器
docker exec -it mysql8 mysql -uroot -p
# 6. 查看日志
docker logs mysql8
# 7. 备份数据库
docker exec mysql8 mysqldump -uroot -proot123 --all-databases > backup.sql
# 8. Docker Compose方式
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql8
restart: always
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: apppass
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/logs:/var/log/mysql
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--max_connections=500
EOF
docker-compose up -d
四、Windows系统安装MySQL
1. 下载MySQL安装包
powershell
# 1. 访问MySQL官网下载 # https://dev.mysql.com/downloads/mysql/ # 选择版本: # Windows (x86, 64-bit), MSI Installer # 或下载ZIP压缩包 # 2. 使用winget安装(Windows 10/11) winget search mysql winget install MySQL.Server
2. MSI安装步骤
powershell
# 安装步骤: 1. 双击下载的MSI安装包 2. 选择安装类型: - Developer Default(开发默认) - Server only(仅服务器) - Client only(仅客户端) - Full(全部安装) - Custom(自定义) 3. 选择安装路径(建议:C:\Program Files\MySQL\MySQL Server 8.0) 4. 配置MySQL服务器 - 配置类型:Development Computer(开发机) - 端口:3306 - 认证方式:Use Strong Password Encryption 5. 设置root密码(必须记住!) 6. 配置Windows Service - Service Name: MySQL80 - 启动类型:Automatic 7. 应用配置并完成安装
3. ZIP包安装(免安装版)
powershell
# 1. 解压ZIP包到指定目录 # 例如:C:\mysql-8.0.33-winx64 # 2. 创建配置文件 my.ini # C:\mysql-8.0.33-winx64\my.ini [client] port=3306 default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 prompt="\\u@\\h [\\d]> " [mysqld] # 基础设置 port=3306 basedir=C:/mysql-8.0.33-winx64 datadir=C:/mysql-8.0.33-winx64/data character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 连接设置 max_connections=500 max_connect_errors=100 # 存储引擎 default-storage-engine=INNODB # InnoDB设置 innodb_buffer_pool_size=1G innodb_log_file_size=256M innodb_flush_log_at_trx_commit=2 innodb_file_per_table=1 # 日志 log-error=error.log slow_query_log=1 slow_query_log_file=slow.log long_query_time=2 # 3. 初始化数据库 # 以管理员身份运行cmd cd C:\mysql-8.0.33-winx64\bin mysqld --initialize --console # 记录初始密码(显示在输出中) # 4. 安装Windows服务 mysqld --install MySQL80 # 5. 启动服务 net start MySQL80 # 6. 登录并修改密码 mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; # 7. 添加到系统PATH # 将 C:\mysql-8.0.33-winx64\bin 添加到系统环境变量 Path 中
五、MySQL初始化配置
1. 启动MySQL服务
bash
# CentOS/RHEL systemctl start mysqld systemctl enable mysqld systemctl status mysqld # Ubuntu systemctl start mysql systemctl enable mysql # 通用 service mysql start service mysql status # 查看进程 ps aux | grep mysql # 查看端口 netstat -tlnp | grep 3306
2. 获取初始密码
bash
# MySQL 5.7+ 会生成随机初始密码 # CentOS/RHEL grep 'temporary password' /var/log/mysqld.log # Ubuntu grep 'temporary password' /var/log/mysql/error.log # 或查看完整日志 cat /var/log/mysqld.log | grep password # 如果没有密码,可能需要空密码登录 mysql -u root
3. 安全配置向导
bash
# 运行安全配置脚本 mysql_secure_installation # 交互过程: # 1. 输入当前root密码 # 2. 是否修改root密码? (y/n) # 3. 输入新密码 # 4. 是否移除匿名用户? (y/n) -> y # 5. 是否禁止root远程登录? (y/n) -> y # 6. 是否移除test数据库? (y/n) -> y # 7. 是否重新加载权限表? (y/n) -> y # 示例输出: Enter password: **** New password: ******** Re-enter new password: ******** Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y All done!
4. 手动安全配置
sql
-- 登录MySQL
mysql -u root -p
-- 1. 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
-- 2. 删除匿名用户
DELETE FROM mysql.user WHERE User='';
-- 3. 禁止root远程登录
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
-- 4. 删除测试数据库
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
-- 5. 创建普通用户
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'AppPass123!';
CREATE USER 'appuser'@'%' IDENTIFIED BY 'AppPass123!';
-- 6. 授权
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' WITH GRANT OPTION;
-- 7. 刷新权限
FLUSH PRIVILEGES;
-- 8. 查看用户
SELECT User, Host, authentication_string FROM mysql.user;
5. 配置文件优化
ini
# /etc/my.cnf 或 /etc/mysql/my.cnf [client] port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set = utf8mb4 [mysql] prompt="\\u@\\h [\\d]> " no-auto-rehash default-character-set = utf8mb4 [mysqld] user = mysql port = 3306 socket = /var/lib/mysql/mysql.sock pid-file = /var/run/mysqld/mysqld.pid basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking bind-address = 0.0.0.0 # 字符集 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init-connect = 'SET NAMES utf8mb4' skip-character-set-client-handshake # 连接设置 max_connections = 500 max_connect_errors = 100 connect_timeout = 10 wait_timeout = 600 max_allowed_packet = 64M interactive_timeout = 28800 # 缓冲区 key_buffer_size = 256M sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 4M join_buffer_size = 2M # 临时表 tmp_table_size = 64M max_heap_table_size = 64M # 表缓存 table_open_cache = 2048 table_definition_cache = 2048 # 线程缓存 thread_cache_size = 256 thread_stack = 256K # 查询缓存(MySQL 8.0已移除) # query_cache_type = 1 # query_cache_size = 64M # query_cache_limit = 2M # InnoDB设置 default-storage-engine = InnoDB innodb_buffer_pool_size = 2G innodb_log_file_size = 512M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_file_per_table = 1 innodb_open_files = 2048 innodb_io_capacity = 2000 innodb_read_io_threads = 4 innodb_write_io_threads = 4 # 日志设置 log_error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = 1 # 二进制日志 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW expire_logs_days = 7 max_binlog_size = 100M # 安全设置 local_infile = 0 skip_symbolic_links = yes secure_file_priv = /var/lib/mysql-files [mysqldump] quick quote-names max_allowed_packet = 64M
六、验证安装
1. 基本验证
bash
# 1. 检查版本 mysql --version # 输出示例:mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server) # 2. 查看服务状态 systemctl status mysqld # 3. 查看进程 ps aux | grep mysql # 4. 查看端口 netstat -tlnp | grep 3306 # 5. 测试登录 mysql -u root -p # 输入密码后进入MySQL提示符
2. 执行简单SQL
sql
-- 登录后执行
mysql> SELECT VERSION();
mysql> SELECT NOW();
mysql> SELECT USER();
mysql> SELECT DATABASE();
-- 创建测试数据库
mysql> CREATE DATABASE testdb;
mysql> USE testdb;
-- 创建测试表
mysql> CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT,
department VARCHAR(50),
salary DECIMAL(10,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入数据
mysql> INSERT INTO employees (name, age, department, salary) VALUES
('张三', 28, '技术部', 12000.00),
('李四', 32, '市场部', 10000.00),
('王五', 35, '技术部', 15000.00);
-- 查询数据
mysql> SELECT * FROM employees;
mysql> SELECT department, AVG(salary) as avg_salary FROM employees GROUP BY department;
-- 删除测试数据
mysql> DROP DATABASE testdb;
3. 性能测试
bash
# 1. 使用mysqlslap进行压力测试
mysqlslap --user=root --password --concurrency=50 --iterations=10 \
--query="SELECT * FROM mysql.user;" --create-schema=mysql
# 2. 查看数据库状态
mysql -e "SHOW STATUS LIKE '%connect%';"
mysql -e "SHOW STATUS LIKE '%thread%';"
# 3. 查看变量
mysql -e "SHOW VARIABLES LIKE '%buffer%';"
# 4. 查看进程列表
mysql -e "SHOW PROCESSLIST;"
4. 编写测试脚本
bash
#!/bin/bash
# mysql_test.sh - MySQL连接测试脚本
MYSQL_USER="root"
MYSQL_PASS="your_password"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
echo "MySQL连接测试"
echo "=============="
# 1. 测试网络连接
echo "1. 测试端口连通性..."
nc -zv $MYSQL_HOST $MYSQL_PORT 2>&1
if [ $? -eq 0 ]; then
echo " ✓ 端口可达"
else
echo " ✗ 端口不可达"
fi
# 2. 测试MySQL登录
echo "2. 测试MySQL登录..."
mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST -P$MYSQL_PORT -e "SELECT 1" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✓ 登录成功"
else
echo " ✗ 登录失败"
fi
# 3. 获取MySQL信息
echo "3. MySQL信息:"
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SELECT VERSION() as Version, NOW() as CurrentTime, USER() as User\G"
# 4. 获取数据库列表
echo "4. 数据库列表:"
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW DATABASES;"
# 5. 获取状态信息
echo "5. 关键状态指标:"
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW STATUS LIKE 'Threads_connected';"
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW STATUS LIKE 'Questions';"
mysql -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW STATUS LIKE 'Slow_queries';"
echo "测试完成!"
七、MySQL常用命令
1. 服务管理命令
bash
# 启动 systemctl start mysqld service mysql start # 停止 systemctl stop mysqld service mysql stop # 重启 systemctl restart mysqld service mysql restart # 重载配置 systemctl reload mysqld mysqladmin reload # 查看状态 systemctl status mysqld service mysql status
2. 连接管理命令
bash
# 本地连接 mysql -u root -p mysql -u root -p123456 # 远程连接 mysql -u root -p -h 192.168.1.100 -P 3306 # 使用socket连接 mysql -u root -p -S /tmp/mysql.sock # 执行单条命令 mysql -u root -p -e "SHOW DATABASES;" # 执行SQL文件 mysql -u root -p < backup.sql # 带配置文件连接 mysql --defaults-file=/etc/my.cnf -u root -p
3. 管理命令
bash
# 查看MySQL进程 ps aux | grep mysql # 查看端口 netstat -tlnp | grep mysql # 查看日志 tail -f /var/log/mysql/error.log tail -f /var/log/mysql/slow.log # 备份数据库 mysqldump -u root -p --all-databases > all.sql mysqldump -u root -p --databases db1 db2 > dbs.sql mysqldump -u root -p db1 table1 > table.sql # 恢复数据库 mysql -u root -p < all.sql mysql -u root -p db1 < backup.sql # 优化表 mysqlcheck -u root -p --optimize --all-databases # 修复表 mysqlcheck -u root -p --repair --all-databases # 检查表 mysqlcheck -u root -p --check --all-databases
八、常见问题排查
1. 无法启动MySQL
bash
# 1. 查看错误日志 tail -f /var/log/mysql/error.log # 2. 检查端口冲突 netstat -tlnp | grep 3306 # 3. 检查权限 chown -R mysql:mysql /var/lib/mysql chmod -R 755 /var/lib/mysql # 4. 检查配置文件语法 mysqld --verbose --help | grep -A 1 "Default options" # 5. 尝试手动启动 mysqld --console --skip-grant-tables
2. 忘记root密码
bash
# 方法1:使用init-file(推荐) # 创建密码重置文件 cat > /tmp/mysql-init << EOF ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; FLUSH PRIVILEGES; EOF # 重启MySQL并加载init-file systemctl stop mysqld mysqld --init-file=/tmp/mysql-init & # 或使用配置文件 echo "init-file=/tmp/mysql-init" >> /etc/my.cnf systemctl start mysqld # 方法2:跳过授权表 systemctl stop mysqld mysqld_safe --skip-grant-tables & mysql -u root # 在MySQL中执行 FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; quit # 重启正常模式 systemctl restart mysqld
3. 连接问题
bash
# 1. 检查网络 ping 192.168.1.100 telnet 192.168.1.100 3306 # 2. 检查防火墙 iptables -L -n | grep 3306 firewall-cmd --list-all # 3. 检查MySQL配置 grep bind-address /etc/my.cnf # bind-address应该为0.0.0.0允许远程连接 # 4. 检查用户权限 mysql -e "SELECT User, Host FROM mysql.user WHERE User='root';" # 5. 授权远程访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;
九、卸载MySQL
1. CentOS/RHEL卸载
bash
# 1. 停止服务
systemctl stop mysqld
# 2. 查看已安装的包
rpm -qa | grep -i mysql
# 3. 卸载包
yum remove mysql-community-server mysql-community-client \
mysql-community-common mysql-community-libs
# 4. 删除配置文件和数据
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
rm -rf /var/log/mysql
# 5. 删除用户
userdel mysql
groupdel mysql
2. Ubuntu/Debian卸载
bash
# 1. 停止服务 systemctl stop mysql # 2. 卸载包 apt purge mysql-server mysql-client mysql-common apt autoremove # 3. 删除配置文件和数据 rm -rf /var/lib/mysql rm -rf /etc/mysql rm -rf /var/log/mysql # 4. 删除用户 deluser mysql delgroup mysql
十、总结
MySQL安装方式对比
| 安装方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| YUM/APT | 简单、易维护 | 版本可能较旧 | 生产环境 |
| 官方仓库 | 版本新、更新方便 | 需添加仓库 | 生产环境 |
| 二进制 | 灵活、可定制 | 配置复杂 | 特殊需求 |
| 源码编译 | 高度优化 | 耗时、复杂 | 性能优化 |
| Docker | 快速、隔离 | 性能略差 | 开发测试 |
安装后检查清单
-
MySQL服务正常运行
-
root密码已修改
-
匿名用户已删除
-
禁止root远程登录
-
test数据库已删除
-
配置文件已优化
-
防火墙已配置
-
日志目录权限正确
-
备份策略已制定
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)