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;
相关推荐
云边有个稻草人2 小时前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
罗超驿3 小时前
8.数据库约束学习笔记:从非空、默认、唯一与主键约束到主键自增
数据库·mysql
Irene19916 小时前
SQL示例:分别使用 MySQL 和 Oracle 创建表,MySQL 插入数据建索引(自增主键、指定主键的区别,VARCHAR,VARCHAR2)
mysql·oracle
用户4217632814076 小时前
如何用java实现一个简单的并发版本控制MVCC
mysql
想唱rap6 小时前
传输层协议TCP
linux·运维·服务器·网络·c++·tcp/ip
阿维的博客日记7 小时前
求解深分页问题,last pk适合什么情况
java·mysql·深分页
曦夜日长7 小时前
Linux系统篇,权限(二):缺省权限、最终权限的计算、文件隔离的两种方式
linux·运维·服务器
__water7 小时前
【下载配置Mysql】
mysql
云水一下7 小时前
黑客的“猜密码”游戏:SSH暴力破解实战与Linux安全加固
linux·渗透测试·ssh·暴力破解
kebidaixu7 小时前
OK3568开发板更新Ubuntu22.04方法总结
linux·运维·服务器