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;
相关推荐
木头程序员3 小时前
SSM框架学习笔记
java·开发语言·mysql·spring·maven
一起逃去看海吧3 小时前
dify-03
java·linux·开发语言
fengyehongWorld3 小时前
Linux 根据端口进行的相关查询
linux
lihao lihao3 小时前
linux匿名管道
linux·运维·服务器
うちは止水3 小时前
weston出图调试
linux·wayland·weston
STDD3 小时前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格4 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801684 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng4 小时前
Linux LCD驱动
linux·运维·服务器