1. apt install mysql-server
安装过程中会自动:
- 安装 MySQL 服务
- 创建 systemd 服务
- 默认初始化数据目录
但是此时,mysql没有配置密码,可以直接使用
mysql -uroot
登录
2. 运行安全配置脚本:mysql_secure_installation
跟着提示一步一步走,基本都是先选yes就行
3. 开始设置用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
FLUSH PRIVILEGES;
FLUSH PRIVILEGES作用是:
强制 MySQL 重新加载权限表到内存
等价于:
重新读取 mysql.user 等系统表 → 更新权限缓存
之后你就可以:
mysql -u root -p
但是由于安全配置中,只能本地登录选择了yes,所以现在只有一个root用户,并且只能本地登录
4. 怎么查看当前mysql的所有用户
SELECT user, host, plugin FROM mysql.user;
-
user:用户名 -
host:允许从哪里登录(localhost 只本地,% 任意地址) -
plugin:认证方式(mysql_native_password /caching_sha2_password)
创建一个dev用户,这个用户有创建库表,也有对表新增和修改数据的权限,但是没有删除库表的权限,并且开放任意ip
CREATE USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY '你的强密码';
GRANT CREATE, ALTER, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES ON *.* TO 'dev'@'%';
权限说明:
-
CREATE:可以创建数据库、创建表 -
ALTER:可以修改表结构 -
SELECT / INSERT / UPDATE / DELETE:可以增删改查数据 -
没有给的权限:
DROP:不能删库、不能删表DROP USER:不能删用户GRANT OPTION:不能授权别人
FLUSH PRIVILEGES; 刷新mysql权限
5. 怎么修改mysql的端口
编辑配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 port 配置
如果没有就自己加,在 [mysqld] 下:
[mysqld]
port = 3307
6. 让mysql服务可以被远程访问
也是在上面的配置文件下
确认监听地址
如果你要远程访问:
bind-address = 0.0.0.0
否则只本机访问:
bind-address = 127.0.0.1
7.重启mysql,并查看服务进行确认
systemctl restart mysql
查看端口监听
ss -tlnp | grep 3307
8. 到这里mysql本身的配置已经全部完成,但是还是要注意以下的坑
查看防火墙目前开放的端口,并确认有没有3307
ufw status
如果没有,就加上
sudo ufw allow 3307
如果是云服务厂商的服务器,最好检查下对应厂商的防火墙控制台,同时配置以下端口放行
将mysql注册成开机自启动的服务,并验证
sudo systemctl enable mysql sudo systemctl is-enabled mysql
最后找另一台机器,自测一下dev用户连接,就大功告成了