MySql Linux 安装

下载

下载后的文件为:mysql-8.4.2-linux-glibc2.28-x86_64.tar.xz

创建用户和用户组

bash 复制代码
$> groupadd mysql
$> useradd -r -g mysql -s /bin/false mysql

由于用户仅用于所有权目的,而不是登录目的,因此useradd命令使用 -r和-s /bin/false选项来创建不具有服务器主机登录权限的用户

解压缩

此处我们在 /opt/app/soft

bash 复制代码
$> cd /opt/app/soft
$> tar xvf mysql-8.4.2-linux-glibc2.28-x86_64.tar.xz
# 将文件夹改名为 mysql-8.4.2
$> mv mysql-8.4.2-linux-glibc2.28-x86_64 mysql-8.4.2

设置环境变量

bash 复制代码
export PATH=$PATH:/opt/app/soft/mysql-8.4.2/bin

注:要永久设置环境变量,请通过修改 ~/.bash_profile 或其它环境变量配置文件来修改

创建 my.cnf 文件

在 /opt/app/soft/mysql-8.4.2 (安装根路径下)创建 my.cnf 文件

bash 复制代码
[mysqld] 
# mysql的安装目录,也就是我们解压的目录(注意分隔符的方向win和linux不一样)
basedir= /opt/app/soft/mysql-8.4.2
# mysql数据库的数据的存放目录
datadir= /opt/app/soft/mysql-8.4.2/data
# 默认使用的端口(这里我们修改为3608)
port=3608

# 服务端使用的字符集utf8mb4就是mysql的utf8编码,mysql中的utf8编码很多汉字会乱码
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci

# 允许最大连接数
max_connections=200
# 允许连接失败的次数
max_connect_errors=10
# 设置INNODB为默认存储引擎
default-storage-engine=INNODB
 
[mysql]
# 默认字符集
default-character-set=utf8mb4
 
[client]
default-character-set=utf8mb4
port=3608

初始化数据目录

确保 libaio 已安装

bash 复制代码
# 查看 libaio
$> rpm -q libaio

如果没有安装,需要先安装此依赖。如果能够使用 yum 安装,可以使用如下命令

bash 复制代码
$> yum install libaio

如果不能使用 yum 安装,请自行安装吧,这里不做详细介绍了

修改安装目录的权限

bash 复制代码
$> chown mysql:mysql /opt/app/soft/mysql-8.4.2
$> chmod 750 /opt/app/soft/mysql-8.4.2

注:此处的 /opt/app/soft/mysql-8.4.2 就是你解压的文件根路径

执行初始化命令

bash 复制代码
$> mysqld --initialize-insecure --user=mysql

初始化数据目录和windows安装一样,这里就不做过多解释了,需要的可以看我们上一篇 windows 安装。

启动 mysql 服务

bash 复制代码
$> mysqld_safe --user=mysql &

设置 root 密码

我们在执行初始化命令时,没有使用 mysqld --initialize --console ,不会生成默认的 root 密码,所以我们需要自己设置

bash 复制代码
$> mysqladmin -u root password

登录验证

bash 复制代码
$> mysql -u root -p
Enter password: 

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.4.2     |
+-----------+
1 row in set (0.00 sec)

mysql> 

远程连接

null, message from server: "Host '111.111.111.111' is not allowed to connect

bash 复制代码
mysql> use mysql;
mysql> update user set host = '%' where user='root';
mysql> flush privileges;

host = '%' 表示允许所有 IP 访问,必要时可以限定特定的 IP

Public Key Retrieval is not allowed

MySQL的 8 版本以后,客户端用户连接的认证方式是 caching_sha2_password,而之前认证方式默认为 mysql_native_password。当禁用 SSL/TLS 协议传输后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误。

解决方式1

允许客户端使用公钥检索,jdbc 连接串中添加:

bash 复制代码
useSSL=false&allowPublicKeyRetrieval=true

建议使用此方式

解决方式2

修改认证为 mysql_native_password

bash 复制代码
# 登录 MySQL 后执行
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root用户对应的密码';
## 刷新权限
mysql> FLUSH PRIVILEGES;
相关推荐
k4m7v2pz16 小时前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机
木子欢儿17 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
五阿哥永琪18 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善18 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
会编程的土豆20 小时前
Go 模板初识
linux·运维·服务器
Ai拆代码的曹操1 天前
MySQL GROUP BY 性能优化:执行计划分析 + 索引重构实战
mysql·性能优化·重构
regret~1 天前
【记录】网络路由、转发与网卡隔离
linux·服务器·网络
aFakeProgramer1 天前
Linux版本兼容问题及RTA-VRTE环境配置笔记
linux·笔记
Zhu7581 天前
在Ubuntu24快速配置专用SFTP
linux·sftp
码农客栈1 天前
Linux 内核顶层 Makefile 详解
linux