首页 > 极客资料 博客日记
MySQL 安装部署
2025-01-10 20:00:04极客资料围观3次
概述
本文主要介绍如何在 Linux 中以 RPM 包的方式安装 MySQL 并进行相关的初始化配置,文中方案均已实践验证。
操作系统 | CentOS 7.6 |
---|---|
数据库版本 | MySQL 8.4.3 LTS |
[!NOTE] 说明
本文主要介绍 RPM 包的安装方式,其他安装方法可查阅官网:MySQL :: MySQL 8.4 Reference Manual :: 2.5 Installing MySQL on Linux
环境准备
从官方下载RPM包:MySQL :: Download MySQL Community Server
- 版本:8.4.3 LTS
- 系统:RedHat Linux / Oracle Linux
- 内核:Linux 7 (本文是7-x86-84bit)
各个包之间存在依赖关系,如果需要安装完整版,则下载 RPM bundle tar ,里面包含了所有的RPM包。大多数情况下,标准安装MySQL只需要下载以下RPM包:
- mysql-community-server
- mysql-community-client
- mysql-community-client-plugins
- mysql-community-libs
- mysql-community-icu-data-files
- mysql-community-common
- mysql-community-libs-compa
如果已安装MySQL,需要先删除旧版本:
yum list installed | grep mysql
rpm -qa | grep mysql
yum remove mysql
安装部署
将下载的RPM包上传至服务器目录,并在目录下执行如下命令进行安装:
$> su - mysql
$> sudo yum install mysql-community-{client,client-plugins,common,libs}-*
[!NOTE] 注意
有些用户会使用rpm -Uvh
,但是由于潜在的依赖项问题,可能会导致安装失败,因此使用yum
。
安装完成后,会创建如下文件和资源:
Files or Resources | Location | 说明 |
---|---|---|
Client programs and scripts | /usr/bin |
客户端程序和脚本 |
mysqld server | /usr/sbin |
mysqld 服务器 |
Configuration file | /etc/my.cnf |
配置文件 |
Data directory | /var/lib/mysql |
数据目录 |
Error log file | For RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log For SLES: /var/log/mysql/mysqld.log |
错误日志文件 |
Value of secure_file_priv |
/var/lib/mysql-files |
|
System V init script | For RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld For SLES: /etc/init.d/mysql |
初始化脚本 |
Systemd service | For RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld For SLES: mysql |
系统服务 |
Pid file | /var/run/mysql/mysqld.pid |
Pid 文件 |
Socket | /var/lib/mysql/mysql.sock |
|
Keyring directory | /var/lib/mysql-keyring |
密钥环目录 |
Unix manual pages | /usr/share/man |
|
Include (header) files | /usr/include/mysql |
|
Libraries | /usr/lib/mysql |
|
Miscellaneous support files (for example, error messages, and character set files) | /usr/share/mysql |
|
该安装还会创建一个名为 mysql 的用户及用户组(本文已经提前创建了)。 |
[!NOTE] 注意
mysql
用户是使用 useradd 命令的-r
和-s /bin/false
选项创建的,因此它没有登录服务器主机的权限(有关详细信息,请参阅创建 mysql 用户和组。要切换到mysql
用户,请使用 su 命令及选项:$> su - mysql --shell=/bin/bash
- 安装旧版本的MySQL时,软件包可能已经创建了
/usr/my.cnf
的配置文件,请检查文件内容并迁移其中的所需配置至新的配置文件/etc/my.cnf
,然后删除/usr/my.cnf
。
至此安装完成,启动服务:
$> systemctl start mysqld
可以根据需要设置开机自启动:
systemctl enable mysqld
systemctl list-unit-files|grep mysqld
初始启动后,会创建超级用户root'@'localhost
,用如下命令查看临时密码:
$> sudo grep 'temporary password' /var/log/mysqld.log
使用临时密码登录后修改密码:
$> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
如果在安装过程中出现问题,可以在错误日志文件 /var/log/mysqld.log
查看相关信息。
如果需要安装多个客户端库版本以保持兼容性,使用--oldpackage
,例如:
$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
[!NOTE] 注意
更多详细信息可参见官网文档:MySQL :: MySQL 8.4 Reference Manual :: 2.5.4 Installing MySQL on Linux Using RPM Packages from Oracle
初始配置
配置远程连接
- 修改
/etc/my.cnf
,在mysqld
块加入配置项bind-address=*
(或者 `bind-address=0.0.0.0)。 - 修改
/etc/my.cnf
,在mysqld
块加入配置项mysql_native_password=ON
以允许本地密码连接,重启服务。 - 修改用户的host字段,允许远程主机连接,用通配符
%
表示任意主机:
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
- 确保服务器的防火墙规则允许MySQL服务端口(默认为3306)上的入站流量。
创建用户授权登录
创建新库
CREATE DATABASE mydatabase;
创建用户和密码
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
授权用户
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%';
刷新权限
FLUSH PRIVILEGES;
验证登录:
mysql -h xx.xx.xx.xx -P 3306 -u myuser -p
常见问题
无法使用临时密码登录,登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) 拒绝访问。
-
设置登录时跳过权限检查:修改
/etc/my.cnf
,在mysqld
块加入配置项skip-grant-tables
,然后重启数据库systemctl restart mysqld
。 -
登录mysql :
mysql –uroot –p
-
修改密码:
update mysql.user set authentication_string = 'Root@1234' where user = 'root';
flush privileges;
远程客户端(如Navicat、DBeaver等)连接报错:Authentication plugin 'caching_sha2_password' cannot be loaded
由于MySQL 8.4.3 默认使用的是caching_sha2_password
验证方式,但客户端不支持,需要服务端开启 mysql_native_password
,即在my.cnf
文件的 [mysqld]
部分中加入mysql_native_password=ON
或者以参数 --mysql-native-password=ON
启动 MySQL 服务。
查看当前配置:
mysql> select user, host, plugin from mysql.user;
[!NOTE] 注意
mysql_native_password
身份验证 plugin 从 MySQL 8.0.34 开始被弃用,在 MySQL 8.4 中默认处于禁用状态 ,并从 MySQL 9.0.0 中删除。
修改my.cnf配置后MySQL无法启动
由于MySQL 8.4.3 的部分配置参数对比之前版本存在较大差异,而目前网络上大部分文章的配置参数都是早期版本,导致修改后启动服务报错,比如:
是否启用native_password,旧版本是default-authentication-plugin=mysql_native_password
,新版本是 mysql_native_password=ON
旧版本是default-authentication-plugin=mysql_native_password
,新版本是 mysql_native_password=ON
各参数配置请以官网为准:
MySQL :: MySQL 8.4 Reference Manual :: 7.1.7 Server Command Options
参考文章
标签:
上一篇:详解:订单履约系统规划
下一篇:外部H5唤起常用小程序链接规则整理