【MySQL】在CentOS 7.5平台通过YUM安装MySQL 5.7

发布时间 2023-04-12 10:06:16作者: dbprofessional
[root@node01 ~]# cat >> /etc/hosts <<EOF
192.168.1.201   node01
EOF

[root@node01 ~]# useradd mysql
[root@node01 ~]# id mysql
uid=500(mysql) gid=500(mysql) groups=500(mysql)

[root@node01 ~]# cat >> /etc/security/limits.conf <<EOF
mysql            soft    nproc          4096
mysql            hard    nproc          65535
mysql            soft    nofile         4096
mysql            hard    nofile         65535
EOF

[root@node01 ~]# yum install -y libaio yum-utils
[root@node01 ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm
[root@node01 ~]# yum-config-manager --disable mysql80-community
[root@node01 ~]# yum-config-manager --enable mysql57-community

[root@node01 ~]# yum repolist all | grep mysql 
[root@node01 ~]# yum install -y mysql-community-server
[root@node01 ~]# yum install -y mysql-community-devel
[root@node01 ~]# vim /usr/lib/systemd/system/mysqld.service
# Sets open_files_limit
LimitNOFILE = 65535

[root@node01 ~]# vim /etc/my.cnf
[mysqld]
user = mysql
port = 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error = mysqld_error.log
pid-file=mysqld.pid
log_timestamps = SYSTEM
character-set-server = utf8mb4

open-files-limit = 65535

max_connections = 500
max_connect_errors = 10000

max_allowed_packet = 32M

tmp_table_size = 512M
max_heap_table_size = 512M

slow_query_log = 1
long_query_time = 5
slow_query_log_file = mysqld_slow.log

server_id = 201
log_bin = mysql-bin
binlog_cache_size = 16M
max_binlog_cache_size = 4G
max_binlog_size = 128M
expire_logs_days = 7
binlog_rows_query_log_events = on
log_slave_updates = on

master_info_repository = table
relay_log_info_repository = table
relay_log = relay-bin
relay_log_recovery = 1

transaction-isolation = READ-COMMITTED
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 256M
innodb_log_files_in_group = 4
innodb_log_buffer_size = 16M
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_undo_log_truncate = 1
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_temp_data_file_path = ibtmp1:128M:autoextend
innodb_print_all_deadlocks = 1 

[mysql]
default-character-set = utf8mb4

[root@node01 ~]# mysqld --initialize-insecure
[root@node01 ~]# systemctl daemon-reload
[root@node01 ~]# systemctl start mysqld.service
[root@node01 ~]# systemctl status mysqld.service
[root@node01 ~]# netstat -tunlp | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      22255/mysqld

[root@node01 ~]# mysql_secure_installation
##密码校验插件
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: n

##修改root密码
Please set the password for root here.
New password: 
Re-enter new password: 

##删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

##禁止root远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

##删除测试库
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.
 - Removing privileges on test database...
Success.

##刷新权限
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done! 

[root@node01 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 231
Server version: 5.7.32-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.32-log |
+------------+
1 row in set (0.00 sec)

mysql> create user 'root'@'%' identified by 'abcd.1234';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> flush PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
MySQL 5.7通过Tcmalloc管理内存
[root@node01 ~]# yum -y install gcc make gcc-c++ lsof libunwind libunwind-devel
[root@node01 ~]# wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.10/gperftools-2.10.tar.gz
[root@node01 ~]# tar zxvf gperftools-2.10.tar.gz 
[root@node01 ~]# cd gperftools-2.10

[root@node01 gperftools-2.10]# ./configure
[root@node01 gperftools-2.10]# make
[root@node01 gperftools-2.10]# make install

[root@node01 ~]# cat /usr/lib/systemd/system/mysqld.service
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

[root@node01 ~]# echo 'LD_PRELOAD=/usr/local/lib/libtcmalloc.so' > /etc/sysconfig/mysql  

[root@node01 ~]# systemctl daemon-reload 
[root@node01 ~]# systemctl restart mysqld

[root@node01 ~]# lsof -n | grep tcmalloc
mysqld    17206               mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17207         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17208         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17209         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17210         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17211         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17212         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17213         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
mysqld    17206 17214         mysql  mem       REG                8,3    2644880    4501918 /usr/local/lib/libtcmalloc.so.4.5.10
MySQL 5.7通过Jemalloc管理内存
[root@node01 ~]# wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2
[root@node01 ~]# tar -jxvf jemalloc-5.2.1.tar.bz2 
[root@node01 ~]# cd jemalloc-5.2.1

[root@node01 jemalloc-5.2.1]# ./configure
[root@node01 jemalloc-5.2.1]# make
[root@node01 jemalloc-5.2.1]# make install

[root@node01 ~]# cat /usr/lib/systemd/system/mysqld.service
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

[root@node01 ~]# echo 'LD_PRELOAD=/usr/local/lib/libjemalloc.so' > /etc/sysconfig/mysql   

[root@node01 ~]# systemctl daemon-reload 
[root@node01 ~]# systemctl restart mysqld

[root@node01 ~]# lsof -n | grep jemalloc
mysqld     6272         mysql  mem       REG              253,0    4397600  273167915 /usr/local/lib/libjemalloc.so.2
mysqld     6272  6273   mysql  mem       REG              253,0    4397600  273167915 /usr/local/lib/libjemalloc.so.2
mysqld     6272  6274   mysql  mem       REG              253,0    4397600  273167915 /usr/local/lib/libjemalloc.so.2