linux安装mysql,超级详细,不踩坑

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 等系统表 → 更新权限缓存

之后你就可以:

css 复制代码
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

sql 复制代码
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] 下:

ini 复制代码
[mysqld]
port = 3307

6. 让mysql服务可以被远程访问

也是在上面的配置文件下

确认监听地址

如果你要远程访问:

ini 复制代码
bind-address = 0.0.0.0

否则只本机访问:

ini 复制代码
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用户连接,就大功告成了

相关推荐
better_liang3 小时前
每日Java面试场景题知识点之-消息队列MQ核心场景与实战
java·面试·kafka·消息队列·rabbitmq·rocketmq·mq
小江的记录本3 小时前
【JVM虚拟机】垃圾回收GC:四种引用类型:强引用、软引用、弱引用、虚引用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
better_liang4 小时前
每日Java面试场景题知识点之-SpringBoot启动流程
java·面试·springboot·源码解析·启动流程
Raink老师4 小时前
【AI面试临阵磨枪-69】如何设计一个支持百万级工具的 Agent 系统?如何快速路由与选择工具?
人工智能·面试·职场和发展
Raink老师5 小时前
【AI面试临阵磨枪-77】音视频 + AI:实时字幕、翻译、降噪、虚拟人、多模态对话
人工智能·面试·音视频
Raink老师8 小时前
【AI面试临阵磨枪-76】社交 AI:内容生成、审核、智能回复、多模态理解、安全治理
人工智能·安全·面试
仙俊红8 小时前
Integer\int对比,equals()\hashcode面试
java·面试·职场和发展
kyriewen8 小时前
手写虚拟DOM后,我反问面试官:key为什么不能用index?
前端·react.js·面试
长谷深风1119 小时前
Java 面试高频:反射机制与异常体系全面解析
java·开发语言·面试·exception·java 反射·java 异常·class 对象
甜味弥漫9 小时前
深度解析 JS 中的 this 指向:从底层逻辑到实战规则
javascript·面试