道家人 发表于 2025-4-3 04:33:59

麒麟V10 Linux高级服务器安装Mysql8.3.0(图文结合)

麒麟V10 Linux高级服务器安装Mysql8.3.0

留意:这里我的Linux,MYSQL所有操作均使用的是 root 账号


一、安装准备

确认要下载的Mysql版本与适配的Linux架构
进入linux 检察体系架构,根据体系架构选择下载的Mysql版本
使用 uname -m 下令检察体系架构
# uname -m
x86_64
https://i-blog.csdnimg.cn/direct/01f165e1086448689cb7329afd870f55.png
是 x86_64 架构(Intel/AMD 64 位) 就下载 Linux - Generic (glibc 2.28) (x86, 64-bit) 系列
假如是 aarch64 架构(ARM 64 位)编译的 就要下载 Linux - Generic (glibc 2.28) (ARM, 64-bit) 系列
不然的话会 架构不匹配 导致安装失败,大概无法执行二进制文件: 可执行文件格式错误
官网下载地址:https://dev.mysql.com/downloads/mysql/
1、下载MYSQL

这里我是要下载汗青版本,以是点 Archives
https://i-blog.csdnimg.cn/direct/53d64ca7ccea4faea16f3ec733bedf85.png
选择MySQL版本、操作体系类型、操作体系的架构类型,我的是 x86_64 以是下载 mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz
https://i-blog.csdnimg.cn/direct/00161433adff4a94ad3b38a86c00844b.png
3、检察原来是否已经存在Mysql

# rpm -qa | grep mysql
python2-mysqlclient-1.3.12-8.ky10.x86_64
pcp-pmda-mysql-4.1.3-15.p01.ky10.x86_64
qt5-qtbase-mysql-5.11.1-20.p01.ky10.x86_64
进行卸载
#rpm -e--nodeps python2-mysqlclient
#rpm -e--nodeps pcp-pmda-mysql
#rpm -e--nodeps qt5-qtbase-mysql
# 再次查看,已经没有了
# rpm -qa | grep mysql
卸载后大概存在残留的MySQL组,可以继续使用, 也可以使用以下下令进行删除:
删除 mysql 用户:
sudo userdel mysql
删除 mysql 组:
sudo groupdel mysql
删除 MySQL 数据目录(如果存在):
sudo rm -rf /var/lib/mysql
删除 MySQL 配置文件(如果存在)
sudo rm -rf /etc/my.cnf /etc/mysql/
创建用户与组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
假如已经存在组, mysql 用户不存在,可以直接创建 mysql 用户,并将其添加到现有的 mysql 组中:sudo useradd -r -g mysql -s /bin/false mysql
2、上传/解压MySQL

使用连接工具将压缩包上传至 Linux 的 /root/waves/database/ 文件夹下。
(上传路径看个人爱好选择)。
进入 /root/waves/database/ 使用下令进行解压,将解压后的资源放到 /usr/local/waves/database/mysql830 文件夹下
# tar -xf mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local/waves/database/mysql830
在 /usr/local/waves/database/mysql830 创建 data 目录并赋予权限,赋予mysql830 权限
# sudo mkdir data
# chown mysql:mysql -R /usr/local/waves/database/mysql830/data/
# chown mysql:mysql -R /usr/local/waves/database/mysql830/
https://i-blog.csdnimg.cn/direct/7c66691cec3c43fdbbdca6f8aa8cab1e.png
3、初始化Mysql

这个时候 root 密码是为空的,后边会进行设置密码。
# ./bin/mysqld --user=mysql --basedir=/usr/local/waves/database/mysql830 --datadir=/usr/local/waves/database/mysql830/data --initialize-insecure --user=mysql
创建 my.cnf 设置文件,进行编辑,写入以下内容:
lower_case_table_names 设置Mysql对大小写是否敏感。
必要留意的是 lower_case_table_names一经设置是不可被更改的,要想更改值,必须重新初始化Mysql才行。
官方文档说这个参数只能在数据库初始化操作之前添。
假如数据库已经被初始化过,必要先删除数据目录并重新初始化。不重新初始化MySQL直接更改my.cnf设置的话,重启MySQL会导致启动报错,同时数据库不可被连接。
设置项根据必要进行设置,共有三种 值 可设置
0 为 linux 下的默认设置,表名区分大小写,因为Linux对大小写敏感。
1 为 windows 下的默认规则,表名存储在磁盘上面是小写的,但是比较的时候是不进行区分大小写的。
2 为 macos 下的默认规则,表名存储为建表时的大小写,但是比较的时候是使用小写进行比较的
sudo vim /etc/my.cnf

#填入:

# 设置3306端口
port=3306
#bind-address = 0.0.0.0 表示 MySQL 监听所有网络接口。 配置远程连接会用到
bind-address = 0.0.0.0
# 为1时设置Mysql不区分大小写,默认区分大小写
lower_case_table_names=1
# 设置mysql的安装目录
basedir=/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/waves/database/mysql830/data
socket=/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64/mysql.sock
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password

# 设置mysql客户端默认字符集
default-character-set=utf8mb4

# 设置mysql客户端连接服务端时默认使用的端口
port=3306
socket=/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64/mysql.sock
default-character-set=utf8mb4
4、设置情况变量

vim /etc/profile
# 在文件末尾进行追加 mysql 的安装目录
export PATH=$PATH:/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64/bin
# 刷新权限,使Mysql配置生效
source /etc/profile
5、启动Mysql,设置为开机自启

在 /etc/systemd/system/ 目录下创建一个新的服务文件 mysqld.service
sudo vi /etc/systemd/system/mysqld.service
添加以下内容(根据你的 MySQL 安装路径调解
ExecStart的路径就是:Mysql安装目录下的bin目录中找到mysqld 所处路径加上 /mysqld
basedir :Mysql安装目录
datadir : data的目录
):

Description=MySQL Server
After=network.target


User=mysql
Group=mysql
ExecStart=/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64/bin/mysqld --basedir=/usr/local/waves/database/mysql830/mysql-8.3.0-linux-glibc2.28-x86_64 --datadir=/usr/local/waves/database/mysql830/data
Restart=on-failure


WantedBy=multi-user.target

保存并退出:
按Esc键,然后输入**:wq**保存并退出。
重新加载 systemd 设置和启动 MySQL 服务、设置开机自启动、检查服务状态
# 重载systemd 配置
sudo systemctl daemon-reload
# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置开机自启动
sudo systemctl enable mysqld
# 检查服务状态
sudo systemctl status mysqld
# 重启 MySQL 服务
sudo systemctl restart mysqld
https://i-blog.csdnimg.cn/direct/3c40167e83d0452e8c53ea52a0b548a5.png
6、设置root密码与长途登陆

1、使用 mysql -uroot -p 回车,密码框(这个时候密码还是空的,直接回车即可进入Mysql)。设置root账户密码
2、查询root 用户的主机部分,假如是localhost 必要改为 % ,表现答应从任何主机登录。
3、防火墙放行 3306端口,革新防火墙计谋,检查是否乐成放行
4、#检察 root@% 用户具有长途登录的权限。假如没有 GRANT ALL PRIVILEGES,必要授予权限:
1、设置root账户密码,进行刷新。
# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.3.0 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 如果这里报错,是因为 root 默认连接主机是 localhost ,而我是所有主机都可连接,不需要所有主机连接改为localhost即可,需要的话要先进行第二步。
MySQL [(none)]> ALTER USER 'root'@'%' IDENTIFIED BY 'password';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'

MySQL [(none)]> ALTER USER 'root'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.007 sec)

MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)

2、查询root 用户的主机部分,如果是localhost 需要改为% ,表示允许从任何主机登录。
MySQL [(none)]> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys      | localhost |
| root             | localhost |
+------------------+-----------+
# 更新 mysql.user 表 ,运行以下 SQL 语句,将 root 用户的主机部分改为 %:
UPDATE mysql.user SET host='%' WHERE user='root';
# 修改后,刷新权限使其生效:
FLUSH PRIVILEGES;
# 再次查询 mysql.user 表,确认修改是否生效
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.006 sec)

MySQL [(none)]> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys      | localhost |
+------------------+-----------+
4 rows in set (0.001 sec)

#3、防火墙放行 3306端口,刷新防火墙策略,检查是否成功放行
# sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
# sudo firewall-cmd --reload
success
# sudo netstat -tuln | grep 3306
tcp      0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
tcp6       0      0 :::33060                :::*                  LISTEN

#4、查看 root@% 用户具有远程登录的权限。如果没有 GRANT ALL PRIVILEGES,需要授予权限:
MySQL [(none)]> SHOW GRANTS FOR 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.006 sec)
# 进行授权
MySQL [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.020 sec)
# 刷新权限
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.007 sec)

到这里就设置完成啦!
打开Navicat进行连接测试。
https://i-blog.csdnimg.cn/direct/3fb1247a5ed643a5b7e32432e80e205d.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 麒麟V10 Linux高级服务器安装Mysql8.3.0(图文结合)