最近做一个银行的项目,银行的服务器是鲲鹏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 文章来源
发表评论