以下是 OpenAnolis 8.6 上安装 MySQL 8.33 Generic Binaries 的示例,适用 REHL 及衍生版本。
文章目录
1. 准备工作
- 检查系统要求
- 更新系统软件包
2. 下载 MySQL 8.33 Generic Binaries
-
从 MySQL 官方网站下载 Generic Binaries
在 MySQL 官方下载页面上,通常会看到两种不同的压缩 TAR 存档文件类型:
Compressed TAR Archive
和Compressed TAR Archive, Test Suite
。以下是它们的区别:-
Compressed TAR Archive
-
内容: 这个文件包含 MySQL 的主要二进制文件、库文件和支持文件。它是用来安装和运行 MySQL 数据库服务器的。
-
用途: 用于生产环境或任何需要 MySQL 服务器的地方。
-
-
Compressed TAR Archive, Test Suite
-
内容: 除了包含 MySQL 的主要二进制文件、库文件和支持文件外,还包括 MySQL 的测试套件。这些测试套件包含一系列的测试文件和脚本,用于验证 MySQL 的正确性和稳定性。
-
用途: 主要用于开发环境或测试环境,开发人员可以使用这些测试套件来进行回归测试或验证其配置是否正确。
-
-
-
选择哪个?
- 生产环境: 选择
Compressed TAR Archive
,因为它只包含运行 MySQL 所需的文件。 - 开发和测试环境: 选择
Compressed TAR Archive, Test Suite
,因为它包含额外的测试工具,可以帮助开发人员验证其安装和配置。
- 生产环境: 选择
-
下载适合你操作系统的通用二进制文件
-
glibc
是 GNU C Library,是 Linux 系统中的一个重要组件,提供了系统调用和基本函数库。MySQL 在构建时会依赖于特定版本的glibc
。-
可以使用以下命令来检查系统上安装的
glibc
版本ldd --version
输出的第一行会显示
glibc
版本,例如:ldd (GNU libc) 2.28
-
下载对应 glibc 的安装包
-
-
4. 解压 MySQL Binary 包
-
将下载的 tar 包解压到指定目录
sudo mkdir -p /usr/local/mysql sudo tar xf /tmp/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz -C /usr/local/mysql --strip-components=1
5. 卸载 mariadb-libs 库
-
卸载 mariadb 如果存在
sudo dnf remove -y mariadb-libs
6. 创建 MySQL 用户和组
-
创建 MySQL 用户和组
sudo groupadd mysql sudo useradd -r -m -g mysql -s /bin/false mysql
7. 初始化 MySQL 数据目录
-
初始化 MySQL 数据目录
sudo mkdir -p /data/mysql/{data,log,binlog,conf,tmp}
-
设置 MySQL 的目录权限
sudo chown -R mysql:mysql /usr/local/mysql sudo chown -R mysql:mysql /data/mysql
8. 配置 MySQL
-
创建和编辑 MySQL 配置文件(my.cnf)
sudo vi /data/mysql/conf/my.cnf
完整内容如下:
[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION character_set_server = utf8mb4 collation-server = utf8mb4_bin lower_case_table_names = 1 user = mysql server_id = 1 port = 3306 default-time-zone = '+08:00' enforce_gtid_consistency = ON gtid_mode = ON binlog_checksum = none default_authentication_plugin = mysql_native_password datadir = /data/mysql/data pid-file = /data/mysql/tmp/mysqld.pid socket = /data/mysql/tmp/mysqld.sock tmpdir = /data/mysql/tmp/ skip-name-resolve = ON open_files_limit = 65535 table_open_cache = 2000 ################# InnoDB ######################## innodb_data_home_dir = /data/mysql/data innodb_data_file_path = ibdata1:512M;ibdata2:512M:autoextend innodb_buffer_pool_size = 12000M innodb_flush_log_at_trx_commit = 1 innodb_io_capacity = 600 innodb_lock_wait_timeout = 120 innodb_log_buffer_size = 8M innodb_log_file_size = 200M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 85 innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_thread_concurrency = 32 innodb_file_per_table innodb_rollback_on_timeout innodb_undo_directory = /data/mysql/data innodb_log_group_home_dir = /data/mysql/data ################### Session ########################### join_buffer_size = 8M key_buffer_size = 256M bulk_insert_buffer_size = 8M max_heap_table_size = 96M tmp_table_size = 96M read_buffer_size = 8M sort_buffer_size = 2M max_allowed_packet = 64M read_rnd_buffer_size = 32M ############ Log settings ################### log-error = /data/mysql/log/mysqld.err log-bin = /data/mysql/binlog/binlog binlog-format = ROW server_id = 1 log_bin_index = /data/mysql/binlog/binlog.index max_binlog_size = 500M slow_query_log_file = /data/mysql/log/slow.log slow_query_log = 1 long_query_time = 10 log_queries_not_using_indexes = ON log_throttle_queries_not_using_indexes = 10 log_slow_admin_statements = ON log_output = FILE,TABLE master_info_file = /data/mysql/binlog/master.info
9. 初始化数据库
-
配置系统环境变量
sudo echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile source /etc/profile
-
首次安装,初始化数据库
mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize-insecure --user=mysql
-
启动数据库
mysqld_safe --defaults-file=/data/mysql/conf/my.cnf &
-
查看数据库状态
lsof -i:3306 ps -ef | grep mysql | grep -v grep
10. 配置安全性和基本设置
-
配置 root 用户密码
-
连接数据库
mysql -S /data/mysql/tmp/mysqld.sock
-
查看当前用户并修改root密码
select host,user,authentication_string from mysql.user; ALTER USER 'root'@'localhost' IDENTIFIED BY 'p5yY62KM'; flush privileges;
-
11. 创建 MySQL 服务
-
创建软连接并关闭数据库
ln -s /data/mysql/tmp/mysqld.sock /tmp/mysql.sock mysqladmin -u root -p shutdown
-
创建服务
-
创建文件
sudo vi /usr/lib/systemd/system/mysqld.service
完整内容:
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql # Have mysqld write its state to the systemd notify socket Type=notify # Disable service start and stop timeout logic of systemd for mysqld service. TimeoutSec=0 # Start main service ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit #LimitNOFILE = 10000 Restart=on-failure RestartPreventExitStatus=1 # Set environment variable MYSQLD_PARENT_PID. This is required for restart. Environment=MYSQLD_PARENT_PID=1 PrivateTmp=false
-
授权
chmod 644 /usr/lib/systemd/system/mysqld.service
-
-
启动 MySQL 服务
systemctl start mysqld systemctl status mysqld systemctl enable mysqld.service
12. 验证安装
-
验证 MySQL 版本
-
创建数据库和用户
-
创建数据库 testdb,字符集:utf8mb4 ,排序规则:utf8mb4_bin
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin;
-
创建用户
CREATE USER 'new_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
-
用户权限
GRANT ALL PRIVILEGES ON testdb.* TO 'new_user'@'%' WITH GRANT OPTION;
-
刷新权限
FLUSH PRIVILEGES;
-
-
进行简单的连接和查询测试