当前位置: 首页 > news >正文

Linux 系统下 MySQL 的安装配置

文章目录

  • 一、Ubuntu/Debian 系统(APT 包管理)
    • 1. 更新系统包
    • 2. 添加 MySQL 官方仓库
    • 3. 安装 MySQL 服务器
    • 4. 启动
  • 二、CentOS/RHEL 系统(YUM/DNF 包管理)
    • 1. 卸载系统自带的 MariaDB(可选)
    • 2. 添加 MySQL 官方仓库
    • 3. 安装 MySQL 服务器
    • 4. 启动
    • 5. 获取初始密码(CentOS 特有)
  • 三、初始化安全配置(所有发行版通用)
  • 四、验证安装
  • 五、远程访问配置

一、Ubuntu/Debian 系统(APT 包管理)

1. 更新系统包

首先更新系统软件包列表,确保依赖环境最新:

sudo apt update && sudo apt upgrade -y

2. 添加 MySQL 官方仓库

系统默认仓库的 MySQL 版本可能较旧,建议使用官方仓库:

  • 下载 MySQL APT 配置包(根据系统架构选择,通常为 amd64):

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
    
  • 安装配置包(期间会弹出仓库配置界面,选择 OK 按 Enter 确认默认配置即可):

    sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb
    

    在这里插入图片描述

  • 再次更新包列表,使新仓库生效:

    sudo apt update
    

3. 安装 MySQL 服务器

sudo apt install -y mysql-server

4. 启动

# 启动 MySQL 服务
sudo systemctl start mysql# 设置开机自启
sudo systemctl enable mysql# 查看服务状态(确认是否正常运行)
sudo systemctl status mysql

二、CentOS/RHEL 系统(YUM/DNF 包管理)

1. 卸载系统自带的 MariaDB(可选)

CentOS 系统默认预装 MariaDB(MySQL 的分支),若存在需先卸载:

sudo yum remove -y mariadb-libs

2. 添加 MySQL 官方仓库

  • 下载 MySQL YUM 源配置包(以 CentOS 7 为例,其他版本可到 MySQL 官网 查找):

    wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
    
  • 安装仓库配置包:

    sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm
    

3. 安装 MySQL 服务器

# CentOS 7 使用 yum
sudo yum install -y mysql-community-server# CentOS 8/RHEL 8 使用 dnf
sudo dnf install -y mysql-community-server

4. 启动

# 启动服务
sudo systemctl start mysqld# 设置开机自启
sudo systemctl enable mysqld# 查看状态
sudo systemctl status mysqld

5. 获取初始密码(CentOS 特有)

CentOS 安装后会自动生成 root 用户的初始密码,存储在日志中:

sudo grep 'temporary password' /var/log/mysqld.log

记录密码,后续需要修改。


三、初始化安全配置(所有发行版通用)

安装完成后,建议运行官方安全脚本优化配置:

sudo mysql_secure_installation

按提示完成以下操作:

1. 是否要设置 VALIDATE PASSWORD 组件(强密码策略)

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: n

N 或其他键(不安装验证组件),密码设置更灵活,没有复杂性要求
Y 强制使用强密码,适合生产环境或重视安全的环境

2. 设置/修改 root 密码

如果安装时已生成临时密码(RPM),此处会要求输入并强制修改。

3. 是否移除匿名用户

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.Remove anonymous users? (Press y|Y for Yes, any other key for No) :n

默认情况下,MySQL 安装会创建一个匿名用户,允许任何人无需用户账户即可登录 MySQL。这仅用于测试目的,旨在使安装过程更顺利。在进入生产环境之前,您应该移除这些匿名用户。

个人开发环境随意。

4. 是否禁止 root 用户远程登录

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

通常,root 用户应该只允许从 ‘localhost’ 连接。这样可以确保他人无法从网络猜测 root 密码。
是否禁止 root 用户远程登录?(按 y|Y 表示是,按其他任意键表示否)

N 或其他任意键允许 root 远程登录。生产环境设置 Y(禁止 root 远程登录),如果确实需要远程管理再按需开启。

5. 是否移除测试数据库及其访问权限

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n

默认情况下,MySQL 带有一个名为 ‘test’ 的数据库,任何人都可以访问。这也仅用于测试目的,在进入生产环境之前应该移除。
是否移除测试数据库及其访问权限?

N 或其他任意键保留测试数据库

6. 重新加载权限表

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.Reload privilege tables now? (Press y|Y for Yes, any other key for No) :y

重新加载权限表将确保到目前为止所做的所有更改立即生效。
是否立即重新加载权限表?

Yy 立即重新加载权限表


四、验证安装

登录 MySQL 控制台,确认安装成功:

mysql -u root -p

输入密码后,若显示类似以下信息,说明安装成功:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.34 MySQL Community Server - GPLCopyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

输入 exit; 可退出控制台。

如果报错 ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’

在Ubuntu系统中,MySQL报 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 通常是因为 默认的root用户认证方式不是密码验证,而是使用 auth_socket 插件(依赖系统用户权限)导致的。解决方法如下:

步骤1:通过系统权限登录MySQL
首先,用sudo绕过密码验证直接登录MySQL(利用系统用户权限):

sudo mysql -u root

(无需输入密码,直接回车即可进入MySQL命令行)

步骤2:查看root用户的认证方式
进入MySQL后,执行以下命令,查看root用户的认证插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

如果输出中 plugin 字段显示为 auth_socket,说明确实是认证方式导致的问题。

步骤3:修改认证方式为密码验证并设置密码
执行以下命令,将root用户的认证方式改为密码验证(mysql_native_password),并设置新密码(将your_new_password替换为你要设置的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

步骤4:刷新权限
修改后需要刷新MySQL的权限配置:

FLUSH PRIVILEGES;

步骤5:退出并重新登录测试
输入 exit 退出MySQL,然后用密码登录测试:

mysql -u root -p

此时输入你刚设置的 your_new_password,即可正常登录。

注意:如果之前设置过密码但忘记了,也可以通过上述步骤重新设置密码。确保新密码符合MySQL的复杂度要求(如果开启了密码策略)。


五、远程访问配置

如果需要从其他机器远程连接 MySQL,需手动开启权限:

1. 修改 MySQL 配置文件(允许监听外部地址)

# 编辑配置文件(不同系统路径可能不同)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf  # Ubuntu/Debian
# 或
sudo vim /etc/my.cnf  # CentOS/RHEL# 找到并修改 bind-address(允许所有地址访问,或指定具体IP)
bind-address = 0.0.0.0  # 允许所有IP连接
127.0.0.1# 重启 MySQL 使配置生效
sudo systemctl restart mysql  # 或 mysqld

2. 授权 root 用户允许远程访问(替换 your_password 为实际密码)

mysql -u root -p-- 第一步:创建允许远程访问的root用户(如果不存在)
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '你的密码';-- 第二步:授权root用户所有权限(学习环境简化)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;-- 第三步:刷新权限,立即生效
FLUSH PRIVILEGES;

执行完后,输入exit;退出 MySQL。

3. 开放防火墙 3306 端口(以 UFW 为例,CentOS 用 firewalld)

# Ubuntu/Debian
sudo ufw allow 3306/tcp
sudo ufw reload# CentOS/RHEL
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

4. 本地用 Navicat 等工具测试是否成功
在这里插入图片描述

在这里插入图片描述

注意:
以上配置仅适合本地学习或测试环境临时使用,存在较高安全风险:root作为MySQL最高权限用户,允许其从任意IP远程访问并授予全部权限,一旦密码泄露,可能导致数据库被恶意篡改、删除;生产环境中务必禁用root远程访问,改为创建专用低权限用户,严格限制允许访问的IP段,并遵循“最小权限原则”分配权限,同时避免直接开放3306端口到公网。

http://www.dtcms.com/a/490409.html

相关文章:

  • 16、Docker Compose 安装Kafka(含Zookeeper)
  • QT(c++)开发自学笔记:2.TCP/IP
  • C语言基础语法进阶
  • 池州网站建设公司好的网站你知道
  • 从零起步学习MySQL || 第五章:select语句的执行过程是怎么样的?(结合源码深度解析)
  • 专业的家居网站建设网站单页支付宝支付怎么做的
  • CC10-判断链表中是否有环
  • 【ZEGO即构开发者日报】谷歌推出新款视频生成模型 Veo 3.1;腾讯开源通用文本表示模型Youtu-Embedding;AI 陪伴赛道观察……
  • [Sora] 视频自动编码器(VAE) | `encode_``decode`
  • 算法沉淀第四天(Winner)
  • 西藏地图飞线html
  • 网站建设与管理课程代码做徽章标牌的企业网站
  • selenium实现自动化脚本的常用函数
  • 大语言模型,一个巨大的矩阵
  • 衡阳营养师报考网站大宗贸易交易平台
  • Azure API Management 负载均衡与故障转移策略完整指南
  • TI CCS软件安装
  • 内存映射文件
  • 网站开发开发语言企业网站做seo的优势
  • 资料片:R语言中常见的英文术语及其含义
  • 企业出海的挑战与应对方案
  • 架构术语:什么是东西流量和南北流量
  • 电子电器架构——车载网关转发buffer心得汇总
  • (Python)终端着色进阶:256色基础及色码效果展示
  • 《R for Data Science (2e)》免费中文翻译 (第10章) --- Exploratory data
  • 简述对网站进行评析的几个方面.wordpress 内涵
  • Python自动化从入门到实战(23):Python打地鼠游戏开发
  • (论文速读)ECLIPSE:突破性的轻量级文本到图像生成技术
  • dede 网站入侵新媒体h5是什么
  • 嵌入式系统守护者:复位IC详解与选型指南