杰瑞科技汇

MySQL教程如何在Linux环境下学习?

在 Linux 系统下使用 MySQL 是后端开发和运维的必备技能,这篇教程涵盖了从安装基础操作权限管理的全流程,适用于主流的 Linux 发行版(如 CentOS/RHEL 和 Ubuntu/Debian)。

MySQL教程如何在Linux环境下学习?-图1
(图片来源网络,侵删)

第一部分:安装 MySQL

根据你的 Linux 发行版选择对应的命令。

Ubuntu / Debian 系统

# 1. 更新软件包列表
sudo apt update
# 2. 安装 MySQL 服务器
sudo apt install mysql-server -y
# 3. 启动服务并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql

CentOS / RHEL / Fedora 系统

CentOS 7/8 默认源可能是 MariaDB,如果需要安装官方 MySQL,建议按以下步骤:

# 1. 下载并安装 MySQL 官方 Yum Repository
# (以 CentOS 7 为例,其他版本请去官网查看对应链接)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 2. 安装 MySQL
sudo yum install mysql-community-server -y
# 3. 启动服务并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

第二部分:安全配置 (初始化)

安装完成后,必须运行安全脚本来移除测试数据库、设置 root 密码等。

获取临时密码 (仅限 CentOS/RHEL)

CentOS 安装后会生成一个默认密码,必须先查看:

MySQL教程如何在Linux环境下学习?-图2
(图片来源网络,侵删)
# 查看临时密码
sudo grep 'temporary password' /var/log/mysqld.log

如果是 Ubuntu,通常默认 root 用户通过 sudo 免密登录,可以跳过此步直接运行下面的安全配置。

运行安全配置脚本

sudo mysql_secure_installation

脚本交互流程:

  1. Enter password: 输入 root 密码(Ubuntu 可能直接回车,CentOS 输入上一步查到的密码)。
  2. Set root password? 输入 Y,设置你的新密码(务必记住)。
  3. Remove anonymous users? 输入 Y(移除匿名用户)。
  4. Disallow root login remotely? 输入 Y(禁止 root 远程登录,更安全)。
  5. Remove test database? 输入 Y(删除测试库)。
  6. Reload privilege tables now? 输入 Y(刷新权限)。

第三部分:基础操作命令

登录 MySQL

mysql -u root -p
# 输入密码后回车

常用服务管理命令

# 查看状态
sudo systemctl status mysql    # Ubuntu
sudo systemctl status mysqld   # CentOS
# 重启
sudo systemctl restart mysql
# 停止
sudo systemctl stop mysql

第四部分:SQL 基础语法 (DDL & DML)

登录进 MySQL 命令行(mysql>)后,使用以下命令。

数据库操作

-- 显示所有数据库
SHOW DATABASES;
-- 创建数据库 (utf8mb4 支持表情符号)
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 切换/使用数据库
USE mydb;
-- 删除数据库
DROP DATABASE mydb;

数据表操作

-- 创建表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 查看表结构
DESC users;
-- 查看所有表
SHOW TABLES;
-- 删除表
DROP TABLE users;

数据增删改查 (CRUD)

-- 插入数据
INSERT INTO users (username, email) VALUES ('zhangsan', 'zhang@example.com');
-- 查询数据
SELECT * FROM users;
SELECT * FROM users WHERE id = 1;
-- 更新数据
UPDATE users SET email = 'new_email@test.com' WHERE username = 'zhangsan';
-- 删除数据
DELETE FROM users WHERE id = 1;

第五部分:用户与权限管理 (关键)

在生产环境中,不要一直使用 root 账户,你需要创建特定用户并赋予权限。

创建新用户

-- 创建用户 'devuser' 允许从任何 IP 登录 (%),并设置密码
CREATE USER 'devuser'@'%' IDENTIFIED BY 'YourStrongPassword123!';

注意:'devuser'@'localhost' 表示只能本地登录;'devuser'@'%' 表示允许远程登录。

授予权限

-- 授予 devuser 在 mydb 数据库的所有权限
GRANT ALL PRIVILEGES ON mydb.* TO 'devuser'@'%';
-- 如果想授予所有数据库的权限(不推荐):
-- GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'%';
-- 刷新权限 (使更改立即生效)
FLUSH PRIVILEGES;

查看与撤销权限

-- 查看用户权限
SHOW GRANTS FOR 'devuser'@'%';
-- 撤销权限
REVOKE ALL PRIVILEGES ON mydb.* FROM 'devuser'@'%';

第六部分:配置与远程访问 (进阶)

默认情况下,MySQL 为了安全,只监听 0.0.1 (本地),如果你需要用 Navicat 或 DBeaver 从 Windows 电脑连接 Linux 上的 MySQL,需要修改配置。

修改绑定地址

找到配置文件:

  • Ubuntu: /etc/mysql/mysql.conf.d/mysqld.cnf
  • CentOS: /etc/my.cnf

使用 sudo vim 编辑文件,找到:

bind-address = 127.0.0.1

改为:

bind-address = 0.0.0.0

保存并退出,然后重启 MySQL 服务

防火墙设置

确保 Linux 防火墙开放了 3306 端口。

Ubuntu (UFW):

sudo ufw allow 3306/tcp
sudo ufw reload

CentOS (Firewalld):

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

云服务器安全组

如果你用的是阿里云、腾讯云或 AWS,还需要去网页控制台的安全组规则里,放行 TCP 协议的 3306 端口。


第七部分:备份与还原

在 Linux Shell (终端) 下执行,不是在 mysql> 里面执行。

备份

# 备份单个数据库
mysqldump -u root -p mydb > mydb_backup.sql
# 备份所有数据库
mysqldump -u root -p --all-databases > all_db_backup.sql

还原

# 还原数据库 (需先创建空数据库)
mysql -u root -p mydb < mydb_backup.sql

常见问题排查

  1. 忘记 Root 密码怎么办?
    • 需要修改 /etc/my.cnf 添加 skip-grant-tables 跳过权限验证启动,进入后修改 mysql 库下的 user 表,然后刷新权限,修复后记得去掉该配置并重启。
  2. 报错 "Access denied for user 'root'@'localhost'"
    • 可能是密码输错,或者 root 的 plugin 是 auth_socket (Ubuntu 默认),需要将其改为 mysql_native_password
  3. 中文乱码
    • 确保数据库创建时指定了 utf8mb4,并且表的字符集也是 utf8mb4,可以使用 SHOW VARIABLES LIKE 'char%'; 查看当前字符集设置。
分享:
扫描分享到社交APP
上一篇
下一篇