### 准备
Ubuntu 每个发行版源内软件版本是锁定固定的:
Ubuntu 22.04:mysql-server = MySQL 8.0
Ubuntu 24.04:mysql-server = MySQL 8.0
查看将要安装的版本:
apt show mysql-server

###安装
sudo apt update && sudo apt upgrade -y
sudo apt install mysql-server -y
安装完成后 MySQL 会自动开机自启,并默认运行。
查看服务状态:sudo systemctl status mysql
启停命令:
sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
安全初始化(必做,加固数据库):
sudo mysql_secure_installation
分步交互说明:
1.VALIDATE PASSWORD COMPONENT 密码强度校验,选 n 不开启(自用推荐),y 开启严格密码规则
2.设置 root 密码,重复输入两次
3.Remove anonymous users? → y 删除匿名账号
4.Disallow root login remotely? → y 禁止 root 远程登录
5.Remove test database and access to it? → y 删除测试库
6.Reload privilege tables now? → y 刷新权限
###修改密码
本地登录 MySQL-Ubuntu MySQL8 默认使用 auth_socket 插件认证,不用密码直接 sudo 登录:sudo mysql
修改 root 登录方式(支持密码登录):
1.进入 mysql 命令行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
FLUSH PRIVILEGES;
exit;
2.现在可用密码登录:mysql -u root -p
###配置远程访问(允许外部工具连接)
- 修改配置文件允许监听所有 IP
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address = 127.0.0.1,修改为:
bind-address = 0.0.0.0
mysql8.0新增
mysqlx-bind-address = 0.0.0.0
- 创建远程访问账号(不要直接开放 root 远程)
登录 mysql:mysql -u root -p
执行 SQL(newuser用户名,123456密码,%代表任意 IP):
CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
授予全部权限
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
FLUSH PRIVILEGES;
exit;
- 放行防火墙 3306 端口
开启ufw防火墙(没开可跳过)
sudo ufw allow 3306/tcp
sudo ufw reload
- 重启 MySQL 生效
sudo systemctl restart mysql
###卸载 MySQL8
sudo apt remove mysql-server mysql-client -y
sudo apt autoremove -y
彻底删除配置+数据(谨慎,会清空所有数据库)
sudo rm -rf /etc/mysql /var/lib/mysql
###常用基础操作
- 创建数据库
CREATE DATABASE db01 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
utf8mb4 完整支持 emoji,推荐默认字符集,不区分大小写、重音
- 查看 mysql 版本
mysql -V
或进入mysql执行
SELECT VERSION();
- 重置 root 密码(忘记密码时)
停止 mysql
sudo systemctl stop mysql
跳过权限启动
sudo mysqld_safe --skip-grant-tables &
新开终端登录,重置密码
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
exit;
结束后台进程,重启服务
sudo pkill mysqld
sudo systemctl start mysql