1. Linux环境下MySQL的安装与配置
1.1 MySQL安装步骤详解
在Ubuntu系统上安装MySQL Server的过程看似简单,但实际操作中会遇到不少坑。根据我多年在Linux环境下部署MySQL的经验,推荐使用以下安装流程:
bash复制# 安装MySQL服务器核心组件
sudo apt install mysql-server -y
# 启动MySQL服务
sudo systemctl start mysql
# 设置MySQL服务开机自启
sudo systemctl enable mysql
# 检查服务状态(确认显示active/running)
sudo systemctl status mysql
重要提示:在较新的Ubuntu版本(如23.10)中,直接运行
sudo apt update可能会导致依赖冲突。建议先单独安装MySQL,再根据需要进行系统更新。
安装完成后,验证MySQL是否正常运行:
bash复制# 检查MySQL进程是否运行
ps -el | grep mysqld
# 尝试连接MySQL(初始安装时root可能无密码)
sudo mysql -u root
1.2 安全配置与密码设置
新安装的MySQL存在严重的安全隐患——root账户默认无密码且允许远程连接。必须立即进行以下安全加固:
sql复制-- 查看当前用户认证信息(注意新版本字段名变化)
SELECT User, Host, authentication_string FROM mysql.user;
-- 设置root密码(MySQL 8.0+语法)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
-- 删除匿名用户
DELETE FROM mysql.user WHERE User='';
-- 删除非localhost的root访问权限
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
-- 刷新权限
FLUSH PRIVILEGES;
1.3 创建应用专用用户
永远不要在生产环境使用root账户进行日常操作。以下是创建专用用户的推荐做法:
sql复制-- 创建新用户并设置密码(MySQL 8.0+语法)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY '复杂密码';
-- 授予最小必要权限(根据实际需求调整)
GRANT SELECT, INSERT, UPDATE, DELETE ON 数据库名.* TO 'appuser'@'localhost';
-- 查看用户权限
SHOW GRANTS FOR 'appuser'@'localhost';
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MySQL日常管理与维护
2.1 常用命令行工具
mysqladmin工具实用技巧
bash复制# 检查服务器状态
mysqladmin -u root -p status
# 创建数据库
mysqladmin -u root -p create 新数据库名
# 安全关闭MySQL服务
mysqladmin -u root -p shutdown
myisamchk修复工具
当使用MyISAM引擎的表损坏时(虽然现在推荐用InnoDB),修复步骤:
bash复制# 首先停止MySQL服务
sudo systemctl stop mysql
# 检查表错误
myisamchk /var/lib/mysql/数据库名/表名.MYI
# 修复表
myisamchk -r /var/lib/mysql/数据库名/表名.MYI
# 强制修复(慎用)
myisamchk -o /var/lib/mysql/数据库名/表名.MYI
2.2 数据库备份与恢复
mysqldump最佳实践
bash复制# 完整备份所有数据库(包含创建语句)
mysqldump -u root -p --all-databases --single-transaction > full_backup.sql
# 只备份特定数据库结构
mysqldump -u root -p --no-data 数据库名 > schema.sql
# 只备份数据(无CREATE语句)
mysqldump -u root -p --no-create-info 数据库名 > data_only.sql
# 压缩备份
mysqldump -u root -p 数据库名 | gzip > backup.sql.gz
恢复数据库注意事项
bash复制# 恢复完整备份
mysql -u root -p < full_backup.sql
# 恢复单个数据库
mysql -u root -p 数据库名 < db_backup.sql
# 从压缩备份恢复
gunzip < backup.sql.gz | mysql -u root -p
3. C语言操作MySQL开发指南
3.1 开发环境配置
在Ubuntu上安装MySQL C开发库:
bash复制sudo apt-get install libmysqlclient-dev
# 验证安装
mysql_config --cflags
mysql_config --libs
编译时需要链接MySQL客户端库:
bash复制gcc -o your_program your_program.c $(mysql_config --cflags --libs)
3.2 基本连接流程
完整连接示例代码:
c复制#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main() {
MYSQL *conn;
const char *server = "localhost";
const char *user = "appuser";
const char *password = "password";
const char *database = "testdb";
// 初始化连接句柄
conn = mysql_init(NULL);
if (!conn) {
fprintf(stderr, "mysql_init() failed\n");
return EXIT_FAILURE;
}
// 实际连接
if (!mysql_real_connect(conn, server, user, password,
database, 0, NULL, 0)) {
fprintf(stderr, "连接错误 %d: %s\n",
mysql_errno(conn), mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
printf("成功连接到MySQL服务器\n");
