一、需求背景
在CentOS 7下,通过离线rpm包的方式快速安装MySQL 8版本数据库。
[
CentOS Linux release 7.6.1810 (Core)
二、下载安装包
下载完成后,应该包含以下几个包文件:
mysql-community-client-8.0.36-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
mysql-community-common-8.0.36-1.el7.x86_64.rpm
mysql-community-devel-8.0.36-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
mysql-community-libs-8.0.36-1.el7.x86_64.rpm
mysql-community-server-8.0.36-1.el7.x86_64.rpm
三、执行安装
按照以下顺序执行安装:
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
安装完毕后,先不要启动,先修改my.cnf配置文件,内容如下。
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld]
server_id = 1
port = 3306
character-set-server = utf8
collation-server = utf8_general_ci
lower_case_table_names = 1
transaction-isolation = READ-COMMITTED
default-time_zone = '+8:00'
log_timestamps = SYSTEM
log_bin=mysql-bin
expire_logs_days=30
binlog_format=ROW
###############################
innodb_buffer_pool_size = 8G
innodb_log_file_size=128M
innodb_log_files_in_group=4
innodb_log_buffer_size=16M
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb-file-per-table=1
auto_increment_increment=1
auto_increment_offset=1
connect_timeout=10
group_concat_max_len=1024
innodb_thread_concurrency=0
innodb_thread_sleep_delay=10000
innodb_write_io_threads=12
interactive_timeout=28800
lock_wait_timeout=31536000
long_query_time=10.000000
low_priority_updates=OFF
max_allowed_packet=1G
max_connect_errors=999999999
max_connections=1600
max_length_for_sort_data=1024
max_prepared_stmt_count=16382
max_user_connections=0
net_read_timeout=30
net_retry_count=10
net_write_timeout=60
ngram_token_size=2
open_files_limit=102400
performance_schema=OFF
query_alloc_block_size=8192
query_prealloc_size=8192
slow_launch_time=2
table_definition_cache=768
table_open_cache=512
table_open_cache_instances=16
thread_cache_size=512
tmp_table_size=1073741824
wait_timeout=2147483
interactive_timeout=3153600
explicit_defaults_for_timestamp = true
log-bin-trust-function-creators = 1
然后执行启动:
/bin/systemctl start mysqld.service
/bin/systemctl status mysqld.service
/bin/systemctl restart mysqld.service
/bin/systemctl stop mysqld.service
四、初始化配置
1、查看初始化密码
grep 'password' /var/log/mysqld.log
[root@bogon ops]# grep 'password' /var/log/mysqld.log
2023-01-24T15:29:53.275110+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: mpBBAW?Vc9pw
2、连接数据库
mysql -u root -h127.0.0.1 -P3306 -p
3、授权被远程访问
查询当前账号信息:
use mysql;
select host, user from user;
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
授权所有主机:update user set host = "%" where user='root';
授权特定主机:
update user set host = "10.19.115.87" where user='root';
立即生效: flush privileges;
五、信息验证
验证数据库时间是否正确:select now() from dual;
mysql> select now() from dual;
+---------------------+
| now() |
+---------------------+
| 2023-01-24 15:46:22 |
+---------------------+
1 row in set (0.00 sec)
查看当前数据库是否区分大小写:
SHOW VARIABLES LIKE 'lower_case_table_names';
mysql> SHOW VARIABLES LIKE 'lower_case_table_names';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set (0.01 sec)
MySQL服务器的lower_case_table_names参数的值为1,这表示表名不区分大小写。
查看是否开启Binlog日志:SHOW VARIABLES LIKE 'log_bin';
mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
六、配置防火墙放行规则
firewall-cmd --zone=public --add-port=8036/tcp --permanent;
firewall-cmd --reload
firewall-cmd --zone=public --list-ports;
80/tcp 9000/tcp 3366/tcp 5000/tcp 5001/tcp 8000/tcp 8001/tcp 6379/tcp 8036/tcp
七、报错处理
启动失败,查看日志:
[MY-010262] [Server] Can't start server: Bind on TCP/IP port: Permission den
解决:关闭selinux
setenforce 0 #临时关闭
修改配置文件:/etc/selinux/config
SELINUX=disabled
重新启动,即恢复正常