最近做一个银行的项目,银行的服务器是鲲鹏ARM架构的服务器,并且是麒麟v10的系统,这里记录一下在无法访问外网安装mysql8.3的方法。8.2版本我也测试了,也是没问题的。

其他文章:

鲲鹏服务器麒麟Lylin v10安装Node和NVM(离线)-CSDN博客

鲲鹏 ARM 架构 麒麟Lylin v10 安装 Nginx (离线)-CSDN博客

鲲鹏 ARM 架构 麒麟 Lylin v10 安装 Pm2 (离线)-CSDN博客

鲲鹏 ARM 架构 麒麟 Lylin v10 安装 PHP 和 adminer (离线)-CSDN博客

1. 前置操作

    # 查看linux 内核

    cat /proc/version

    # 查看麒麟系统信息

    cat /etc/kylin-release 或 cat /etc/os-release

    # 查看系统的glibc版本,如果系统glibc版本较低,运行依赖于更高glibc版本的MySQL可能会遇到兼容性问题。

    ldd --version

    # 删除已安装的所有与 "mariadb" 相关的RPM软件包

        # 1. 查询系统上已安装的所有MariaDB软件包

        rpm -qa | grep mariadb

        # 2. 卸载所有与 "mariadb" 相关的RPM软件包

        rpm -e --nodeps mariadb-connector-c-3.0.6-6.ky10.aarch64

        # 3. 删除系统上已安装过的MySQL软件包

        rpm -qa | grep mysql

        rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64

2. 下载 MySQL 8.3 ARM架构版本的安装包 或者 MySQL 8.2 ARM架构版本的安装包

    # 8.3的地址:https://dev.mysql.com/downloads/mysql/

    # 8.2的地址:https://downloads.mysql.com/archives/community/

    # Operating System: 选择 Linux - Generic,也就是linux的通用版本

    # OS Version: 选择glibc 2.17 ARM 64-bit

    # 8.3 下载文件:mysql-8.3.0-linux-glibc2.17-aarch64.tar.xz 到本地。

    # 8.2 下载文件:mysql-8.2.0-linux-glibc2.17-aarch64.tar.xz 到本地。

3. 进入系统切换到root用户

su

4. 创建 MySQL 安装目录

mkdir /usr/local/mysql

5. 解压安装包到创建的目录

tar -xvf mysql-8.3.0-linux-glibc2.17-aarch64.tar.xz -C /usr/local/mysql --strip-components=1

    # 这个命令将 mysql-8.3.0-linux-glibc2.17-aarch64.tar.xz 文件解压到 /usr/local/mysql 目录中。

    # --strip-components=1 选项会移除每个文件路径中的第一级目录。

    #  这意味着如果压缩包内的文件结构是 mysql-8.3.0-linux-glibc2.17-aarch64/...,

    #  解压后这一级目录会被去掉,文件和目录会直接放在 /usr/local/mysql 下。

6. 创建 MySQL 用户和用户组

groupadd mysql

    # 这个命令创建了一个新的系统用户组 mysql,用于运行MySQL服务。

    # 这个用户组是一个系统用户组,用于管理MySQL服务的权限。

    # 在Linux系统中,用户组是一种将用户组织在一起的方式,可以用于控制用户对文件和目录的访问权限。

    # 在这里,我们创建了一个新的用户组 mysql,用于管理MySQL服务的权限。

useradd -r -g mysql -s /bin/false mysql

    # 这个命令创建了一个新的系统用户 mysql,用于运行MySQL服务。这个用户是一个系统账户,不允许登录系统,这是一个安全措施,因为MySQL服务不需要交互式登录。

    # -r 选项表示创建一个系统账户,通常用于运行守护进程或服务的用户,而不是登录系统的用户。

    # -g mysql 选项指定新用户的初始登录组为 mysql。

    # -s /bin/false 选项设置用户的登录shell为 /bin/false,这意味着用户不能登录系统。这是一种安全措施,用于服务账户,因为它们不应该有交互式登录的能力。

    # 为了让 MySQL 服务以 mysql 用户的身份运行,我们需要创建一个系统用户 mysql,并且将 MySQL 安装目录的所有权赋予这个用户。

7. 更改目录权限

cd /usr/local/mysql

mkdir data log

chown -R mysql:mysql /usr/local/mysql

chmod -R 755 /usr/local/mysql

8. 创建 MySQL 配置文件

cat > /etc/my.cnf <

[mysqld]

# 指定MySQL服务运行时使用的用户。出于安全考虑,推荐非root用户运行MySQL服务。

user=mysql

port=3090

# 指定MySQL的基本安装目录

basedir=/usr/local/mysql

# 指定MySQL数据文件存储的目录。

datadir=/usr/local/mysql/data

# 指定MySQL错误日志文件存储的目录。

log-error=/usr/local/mysql/log/mysql-err.log

# 指定MySQL的socket文件位置。Socket文件用于本地连接,而不是通过网络连接。

socket=/usr/local/mysql/data/mysql.sock

# 指定MySQL的PID文件位置。PID文件用于存储MySQL服务的进程ID。

pid-file=/usr/local/mysql/data/mysql.pid

# Node.js 项目推荐的配置

# 指定MySQL服务的默认认证插件。这个设置决定了MySQL如何验证用户的身份。在MySQL 8.0中,推荐使用mysql_native_password插件。

default_authentication_plugin=mysql_native_password

# 指定服务器的默认字符集。utf8mb4是完全支持Unicode的字符集,可以存储任何Unicode字符。

character-set-server=utf8mb4

# 指定服务器的默认排序规则。utf8mb4_unicode_ci是utf8mb4字符集的默认排序规则,它支持Unicode排序规则。

collation-server=utf8mb4_unicode_ci

# 高级设置

# 这个设置决定了表名的大小写敏感性。在Linux上,0 表示区分大小写,1 表示不区分大小写。如果您的应用程序在Windows上开发(不区分大小写),但在Linux上部署,设置为 1 可以避免因大小写问题导致的错误。

lower_case_table_names = 1

# 这个设置定义了MySQL应该支持的SQL语法、数据校验等。这里列出的模式使MySQL在处理事务表时更加严格,并且在除以零时产生错误,不允许使用已弃用的存储引擎

sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 当设置为 1 时,InnoDB存储引擎对某些条件更加严格,比如创建索引和表的时候。设置为 0 可以放宽这些条件,但可能会隐藏一些问题。

innodb_strict_mode=1

# 这个设置决定了InnoDB的日志文件大小,较大的日志文件可以提高性能,特别是在处理大量事务时。

innodb_log_file_size = 512M

# 当启用二进制日志时,这个设置允许创建存储函数而不需要显式地为它们设置 SUPER 权限。这可以降低安全风险。

log_bin_trust_function_creators=1

# 这个设置决定了在MySQL开始拒绝连接请求之前,可以在队列中积累多少未处理的连接。

back_log = 600

# MySQL能够同时处理的最大连接数。这个值设置得较高,以支持更多并发连接,但也要考虑到增加并发连接会相应增加内存和CPU的使用。

max_connections = 1000

# 在MySQL暂时拒绝某个主机连接之前,该主机可以有的最大连接错误次数。这个值设置得较高,可以在网络不稳定时避免误封合法用户。

max_connect_errors = 6000

# mysqld进程可以打开的文件描述符的最大数量。这个值设置得较高,以支持大量的文件操作,如打开表或日志文件。

open_files_limit = 65535

# 服务器层面可以打开的表的数量。这个值设置得较高,可以提高处理大量表请求的能力。

table_open_cache = 2000

# 允许通过网络发送或接收的最大数据包大小。这个值设置得较大,以支持大型的SQL语句或数据行。

max_allowed_packet = 64M

# 用于存储二进制日志缓存的内存量。这个值设置得较大,可以在事务提交到二进制日志之前缓存更多的事务数据。

binlog_cache_size = 32M

# 内存临时表的最大大小,可以提高内存表操作的性能。如果临时表超过这个大小,它们将被转移到磁盘上,这会减慢查询速度。

max_heap_table_size = 32M

# 内部临时表的最大大小。这个值设置得较大,以便在执行复杂查询(如排序、分组)时,减少将临时表写入磁盘的情况。

tmp_table_size = 64M

# 这个设置指定了MySQL数据库的默认存储引擎。InnoDB是MySQL的默认存储引擎,它提供了事务支持、行级锁定和外键约束等特性。这是一个重要的配置,特别是对于需要这些特性的应用程序。

default-storage-engine = InnoDB

[client]

# 这个设置指定了客户端和服务器通信时使用的socket文件的位置。如果您在服务器上使用了非默认的socket文件位置,那么客户端配置中也需要指定相同的路径,以便客户端能够正确地连接到服务器。

socket=/usr/local/mysql/data/mysql.sock

EOF

9. 初始化 MySQL

cd /usr/local/mysql

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

10. 获取临时密码

tail -1000f log/mysql-err.log

11. 创建软链接

ln -s /usr/local/mysql/bin/mysql /usr/bin

12. 设置环境变量(可选)

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile

source /etc/profile

    # 这个命令将 /usr/local/mysql/bin 目录添加到系统的环境变量 PATH 中。

    # 通过修改 /etc/profile 文件,这个变化会影响到所有用户的所有shell会话。

    # 当你在命令行输入一个命令时,系统会在 PATH 环境变量指定的目录中查找可执行文件。

    # 这意味着,添加之后,你可以在任何位置运行MySQL的可执行文件,而不需要指定完整路径。

13. 安装 MySQL 系统服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

    # 这个命令将MySQL的启动脚本复制到/etc/init.d/目录下,并命名为mysqld。

    # 这是一个初始化(init)脚本,用于在系统启动时自动启动MySQL服务,或者让用户手动启动/停止服务。

chmod +x /etc/init.d/mysqld

    # 这个命令会给mysqld脚本添加执行权限,这是必要的,因为这个脚本需要有执行权限才能被系统作为服务启动和停止。

    # 如果没有执行权限,系统管理员或者服务管理工具将无法启动或停止MySQL服务。

14. 启动服务

./bin/mysqld_safe &

    # 这个命令运行mysqld_safe脚本来安全地启动MySQL服务器,并且&符号表示在后台运行。mysqld_safe是一个脚本,它帮助启动mysqld(MySQL服务器)并在服务器遇到错误时重启它。

    # 如果用了上面的,以下这个就不需要用:

service mysqld start

    # 这个命令是通过系统的服务管理工具(如 service 或 systemctl)来启动MySQL服务。

    # 它需要MySQL已经被设置为系统服务,通常是在 /etc/init.d/ 或者系统的 systemd 配置中。

    # 使用这个命令,MySQL服务会在系统启动时自动启动,并且可以通过相同的服务管理工具来停止、重启或查看服务状态。

    # 这是在生产环境中推荐的启动方式,因为它提供了更好的服务管理和自动化支持。

15. 登录 MySQL

bin/mysql -u root -p'qpTM45GEWj!a' --port=3090

    # 这个命令会连接到MySQL服务器,并以root用户身份登录。

    # 注意,这个命令需要MySQL服务器正在运行,并且root用户的密码是qpTM45GEWj!a。

16. 修改root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin123';

FLUSH PRIVILEGES;

    # 刷新权限

17. 创建新用户bank

CREATE USER 'bank'@'localhost' IDENTIFIED BY 'Admin123';

GRANT ALL PRIVILEGES ON *.* TO 'bank'@'localhost' WITH GRANT OPTION;

    # WITH GRANT OPTION 允许 bank 用户将其所拥有的权限授予其他用户。

    # 没有这个选项的话,bank 用户可以使用其权限,但不能将它们授予给其他用户。

    # *.* 用来表示所有数据库的所有表。

FLUSH PRIVILEGES;

18. 查询用户

select user,host from mysql.user;

19. 修改允许远程连接

update mysql.user set host = '%' where user = 'root';

    # update mysql.user:指定要更新的表是 mysql 数据库中的 user 表。

    # set host = '%':将 host 字段的值设置为 '%'。

    # 在MySQL中,host 字段定义了用户可以从哪些主机连接到数据库服务器。'%' 是一个通配符,表示用户可以从任何主机连接。

    # where user = 'root':这个条件指定只更新用户名为 root 的记录。

FLUSH PRIVILEGES;

20. 创建一个测试数据库

CREATE DATABASE `test`;

SHOW DATABASES;

use test;

create table tb_mobile( mobile VARCHAR(20) comment'手机号码', time timestamp DEFAULT now() comment'时间' );

show tables;

21. 退出mysql

quit

22. 设置开机自启

chkconfig --add mysqld

chkconfig mysqld on

systemctl daemon-reload

systemctl restart mysqld

    # 这个命令将 MySQL 服务添加到系统的服务管理工具中,并且设置 MySQL 服务在系统启动时自动启动。

    # 这样,MySQL 服务会在系统启动时自动启动,并且可以通过服务管理工具来停止、重启或查看服务状态。

    # 这是在生产环境中推荐的启动方式,因为它提供了更好的服务管理和自动化支持。

    # 如果你使用的是 systemd,你可能需要运行 systemctl daemon-reload 来重新加载服务配置。

    # 最后,你可以通过 systemctl restart mysqld 来重启 MySQL 服务,以确保所有配置都生效。

23. 验证mysql服务是否正在运行

service mysqld status

    # 这个命令会显示 MySQL 服务的状态信息,包括是否正在运行以及其他相关信息。

    # 如果你看到的是 Active: active (running) 状态,那么说明 MySQL 服务正在运行。

24. 安全配置

cd /usr/local/mysql/

bin/mysql_secure_installation

    # 然后选项为:no no Y No No Y

25. 测试连接

mysql -u root -pAdmin123 -h localhost -P 3090

mysql -u bank -pAdmin123 -h localhost -P 3090

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: