[toc]
MySQL安裝部署
系統(tǒng):CentOS7
版本:MySQL5.7
RPM/YUM安裝MySQL
1、下載MySQL的yum倉庫文件包并安裝MySQL的yum源
wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
2疮茄、Yum安裝MySQL并啟動(dòng)
yum -y install mysql-server
systemctl start mysqld
3、設(shè)置密碼
cat /var/log/mysqld.log | grep password
...
2022-04-25T02:43:47.618549Z 1 [Note] A temporary password is generated for root@localhost: IYRlP&Uor8eK
...
mysql -uroot -p -> IYRlP&Uor8eK
# 修改的密碼要符合密碼復(fù)雜度
mysql> alter user 'root'@'localhost' identified by 'Abc123./';
遇到問題:
1根暑、執(zhí)行第2步安裝時(shí)遇到以下報(bào)錯(cuò)
...
mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm 的公鑰尚未安裝
失敗的軟件包是:mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG 密鑰配置為:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
...
解決辦法:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
然后重新安裝
二進(jìn)制安裝MySQL
1、清理環(huán)境
# 查看是否有rpm包(若有則卸載)
rpm -qa | grep mysql
# 卸載CentOS7系統(tǒng)自帶的mariaDB
rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
# 卸載系統(tǒng)自帶的Mariadb
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 刪除etc目錄下的my.cnf 排嫌,一定要?jiǎng)h掉,等下再重新建淳地,之前我將就用這個(gè)文件帅容,后面改配置各種不生效
rm /etc/my.cnf
2、創(chuàng)建MySQL用戶組
groupadd mysql
useradd -r -g mysql mysql -s /sbin/nologin
3伍伤、下載官網(wǎng)的Tar.gz包,或者下載之后上傳到服務(wù)器并解壓
# 下載tar包
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.35-el7-x86_64.tar.gz
# 解包
tar -zxvf mysql-5.7.35-el7-x86_64.tar.gz -O /usr/local/services
cd !$
mv mysql-5.7.35-el7-x86_64 mysql5.7
4扰魂、創(chuàng)建相關(guān)目錄并更改用戶組權(quán)限
# 數(shù)據(jù)目錄
mkdir /mnt/my-data
chown -R mysql:mysql /mnt/my-data
# 日志目錄
mkdir -p /var/log/mysql/logs
chown -R mysql:mysql /var/log/mysql/logs
# 存放sock、pid目錄
mkdir /usr/local/services/mysql5.7/tmp
chown -R mysql:mysql /usr/local/services/mysql5.7
5劝评、配置my.cnf文件
[client]
port = 3306
socket = /usr/local/services/mysql5.7/tmp/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/services/mysql5.7
datadir = /mnt/my-data
port = 3306
socket = /usr/local/services/mysql5.7/tmp/mysql.sock
pid-file = /usr/local/services/mysql5.7/tmp/mysqld.pid
tmpdir = /usr/local/services/mysql5.7/tmp
skip_name_resolve = 1
symbolic-links=0
max_connections = 2000
group_concat_max_len = 1024000
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names = 1
log_timestamps=SYSTEM
character-set-server = utf8
interactive_timeout = 1800
wait_timeout = 1800
max_allowed_packet = 32M
binlog_cache_size = 4M
sort_buffer_size = 2M
read_buffer_size = 4M
join_buffer_size = 4M
tmp_table_size = 96M
max_heap_table_size = 96M
max_length_for_sort_data = 8096
# skip-grant-tables=1
#logs
server-id = 1003306
log-error = /var/log/mysql/logs/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/logs/slow.log
long_query_time = 3
log-bin = /var/log/mysql/logs/binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1
relay-log = /var/log/mysql/logs/relay-bin
relay-log-recovery = 1
relay_log_purge = 1
#innodb
innodb_file_per_table = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_neighbors = 0
innodb_flush_method = O_DIRECT
innodb_autoinc_lock_mode = 2
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_buffer_pool_size = 2G
6、配置系統(tǒng)環(huán)境
# 設(shè)置chkconfig
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
# 修改目錄位置
vim /etc/init.d/mysqld
...
basedir=/usr/local/services/mysql5.7
datadir=/mnt/my-data
...
# 注冊開機(jī)自啟
chkconfig --add mysqld
chkconfig --list
# 添加環(huán)境變量
vim /etc/profile
export PATH=$PATH:/usr/local/services/mysql5.7/bin
source /etc/profile
# 設(shè)置軟鏈
ln -s /usr/local/services/mysql5.7/bin/mysql /usr/bin/mysql
7蒋畜、初始化
/usr/local/services/mysql5.7/bin/mysqld --initialize --user=mysql --basedir=/usr/local/services/mysql5.7 --datadir=/mnt/my-data
# 查找密碼
more /var/log/mysql/logs/error.log | grep password
8、登錄并修改密碼
# 密碼是上個(gè)步驟grep出的結(jié)果
mysql -uroot -p
# 修改密碼
mysql> alter user 'root'@'localhost' identified by 'rootroot';
mysql> flush privileges;