MySQL 入门:安装、重置 root 密码与常用 SQL 命令
刚接手一台新 VPS 或服务器,第一件事就是装数据库。MySQL 装不上、root 密码忘了、SQL 语句写错,是运维新手最常碰到的三个坑。这篇 Linux 教程直接给你一套能跑通的流程,从零开始装好 MySQL,搞定密码重置,再顺手记几个最常用的 SQL 命令。别问为什么,照着做就行。

一、MySQL 安装实操:从源到启动
1.1 使用官方仓库安装 MySQL(Ubuntu / Debian)
Ubuntu 默认源里的 MySQL 版本可能太老,建议直接用官方 APT 仓库。
更新系统包索引
sudo apt update
安装 wget,用于下载仓库配置包
sudo apt install wget -y
下载 MySQL APT 仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
安装仓库配置包,过程中会弹出选择界面,保持默认即可
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
更新仓库索引,让系统识别新加的 MySQL 源
sudo apt update
安装 MySQL 服务器
sudo apt install mysql-server -y
安装过程中会提示设置 root 密码。万一你跳过了这一步,或者密码忘了,别慌,下面有重置方法。
1.2 CentOS / Rocky Linux 安装
CentOS 8+ 或 Rocky Linux 直接用 dnf 装 MySQL 8.0。
安装 MySQL 8.0 仓库
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm
安装 MySQL 服务器
sudo dnf install -y mysql-server
启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
查看临时 root 密码(首次安装才有)
sudo grep ‘temporary password’ /var/log/mysqld.log
二、重置 MySQL root 密码:跳过权限表法
忘记 root 密码是家常便饭。别想着卸载重装,那样会丢数据。用下面这招,安全又快速。
1. 停止 MySQL 服务
sudo systemctl stop mysql
2. 以跳过权限表的方式启动 MySQL(后台模式)
sudo mysqld_safe –skip-grant-tables &
3. 直接无密码登录 MySQL
mysql -u root
4. 进入 MySQL 后,执行以下命令重置 root 密码
USE mysql;
注意:MySQL 8.0 的密码字段是 authentication_string,不再是 password
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘YourNewStrongPassword123!’;
FLUSH PRIVILEGES;
EXIT;
完成后,杀掉后台的 mysqld_safe 进程,再正常启动 MySQL。
杀掉后台进程
sudo pkill mysqld_safe
正常启动 MySQL
sudo systemctl start mysql
> **老鸟叮嘱**:`–skip-grant-tables` 模式非常危险,操作完必须立刻退出并重启 MySQL 服务。千万别在生产环境里开着这个模式过夜。
三、常用 SQL 命令:增删改查够用
新手不需要背几百条 SQL,下面这 5 条覆盖 90% 的日常运维场景。
3.1 创建与删除数据库
sql
创建数据库,指定字符集为 utf8mb4,避免中文乱码
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看所有数据库
SHOW DATABASES;
删除数据库(慎用,数据不回收)
DROP DATABASE mydb;
3.2 创建表与插入数据
sql
切换到指定数据库
USE mydb;
创建用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
插入一条记录
INSERT INTO users (username, email) VALUES (‘admin’, ‘admin@example.com’);
3.3 查询与更新数据
sql
查询所有用户
SELECT * FROM users;
按条件查询
SELECT * FROM users WHERE username = ‘admin’;
更新用户邮箱
UPDATE users SET email = ‘newadmin@example.com’ WHERE username = ‘admin’;
删除用户
DELETE FROM users WHERE username = ‘admin’;
四、FAQ:MySQL 入门常见问题
Q1: MySQL 安装后无法启动怎么办?
A: 先看日志。执行 `sudo journalctl -u mysql` 或查看 `/var/log/mysql/error.log`。最常见的原因是端口 3306 被占用,或者 `/var/run/mysqld/` 目录权限不对。用 `sudo lsof -i:3306` 检查端口占用。
Q2: 重置 root 密码时,报错 “Access denied for user ‘root’@‘localhost’”?
A: 说明你跳过了 `–skip-grant-tables` 步骤,或者重启前没有杀掉后台进程。严格按上面步骤来:先停服务,再 `mysqld_safe –skip-grant-tables &`,最后用 `mysql -u root` 无密码登录。
Q3: MySQL 8.0 和 5.7 的密码重置命令一样吗?
A: 不一样。5.7 用 `UPDATE user SET password=PASSWORD(‘新密码’) WHERE User=‘root’;`。8.0 必须用 `ALTER USER` 语法。上面教程用的是 8.0 的写法,如果你装的是 5.7,请替换为旧语法。
Q4: 为什么我的 SQL 语句里中文显示为乱码?
A: 建库时没指定字符集。在 `CREATE DATABASE` 语句后面加上 `CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`。如果库已经建了,可以 `ALTER DATABASE mydb CHARACTER SET utf8mb4;`,但已有数据可能仍显示乱码,建议重建。
Q5: 刚装的 MySQL,用 root 远程登录为什么连不上?
A: MySQL 默认只允许 localhost 登录。想远程连接,需要创建新用户并授权,比如 `CREATE USER ‘remote’@‘%’ IDENTIFIED BY ‘密码’;` 和 `GRANT ALL PRIVILEGES ON *.* TO ‘remote’@‘%’;`。同时检查 VPS 防火墙是否放行了 3306 端口。
Q6: 我执行了 DROP DATABASE,数据还能恢复吗?
A: 除非你有备份,否则基本无法恢复。`DROP DATABASE` 是物理删除,不会进回收站。建议操作前用 `mysqldump` 备份:`mysqldump -u root -p mydb > mydb_backup.sql`。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9448.html 商家投稿邮箱:zhujixuanblog@qq.com
