1. 首页 > 技术教程 > 正文

MySQL 入门:安装、重置 root 密码与常用 SQL 命令

MySQL 入门:安装、重置 root 密码与常用 SQL 命令

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

MySQL 入门:安装、重置 root 密码与常用 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