在centos环境下,mysql安装部署主要是yum或二进制包安装,在其他linux发行版也有类似的安装方式,通过包管理器进行安装,相对来说比较方便。如果是简单测试,还可以通过docker来配置,更加简单。
总结下来,主要有下面几种安装部署方式
配置yum仓库下载
参考:https://dev.mysql.com/downloads/repo/yum/
在mysql官方网站进行rpm包下载,下载地址:
https://dev.mysql.com/downloads/mysql/
上面的地址只能看到最新稳定版的,我们要下载的5.7版本属于老版本,要在历史归档里面查找
https://downloads.mysql.com/archives/community/
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
yum localinstall -y ./mysql-community-*.rpm
rpm包安装完之后,配置文件在/etc/my.cnf,服务配置文件在/usr/lib/systemd/system/mysqld.service
修改/etc/my.cnf配置文件
[mysqld@3306]
# 这个配置段配置的是3306这个mysql实例的参数,如果有多实例,比如加一个3307的mysql,再加一个配置段,参考下面的配置稍微改一下就行
innodb_buffer_pool_size = 5000M
# server_id的值,局域网内,不同实例的值要设置为不同的
server_id=20106
#log_slave_updates=1
port = 3306
datadir=/home/my3306
socket=/home/my3306/mysql.sock
log-error=/home/my3306/mysqld.log
pid-file=/home/my3306/mysqld.pid
log_bin=mysql-201-binlog
# gitid最好是开启
gtid_mode=ON
enforce-gtid-consistency=ON
max_connections=2048
slow_query_log=ON
binlog_format=row
skip-name-resolve
log-slave-updates=1
relay_log_purge=0
back_log=128
wait_timeout=60
interactive_timeout=7200
key_buffer_size=16M
#query_cache_size=64M
#query_cache_type=1
#query_cache_limit=50M
max_connect_errors=20
sort_buffer_size=2M
max_allowed_packet=32M
join_buffer_size=2M
thread_cache_size=200
innodb_buffer_pool_size=1024M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_log_files_in_group=3
binlog_cache_size=2M
max_binlog_cache_size=8M
max_binlog_size=512M
expire_logs_days=7
read_buffer_size=2M
read_rnd_buffer_size=2M
bulk_insert_buffer_size=8M
数据目录已经设置好了,下面就是新建目录,授权
mkdir -pv /home/my3306
chown -R mysql.mysql /home/my3306
启动mysql
systemctl start mysqld@3306
# 注意,不是systemctl start mysqld,因为后面要考虑mysql多实例
获取初始密码
cd /home/my3306
grep pass mysqld.log
使用初始密码登录,修改root密码,用户授权
mysql -uroot -S /home/my3306/mysql.sock -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@1234';
新用户授权
use mysql;
create user user01@'10.91.0.%' identified by 'Root@1234';
grant all privileges on *.* to user01@'10.10.0.%' with grant option;
# 或者是
grant all privileges on *.* to 'user02'@'10.10.0.%' identified by 'Root@1234' with grant option;
grant all privileges on test.* to 'user03'@'10.10.0.%' identified by 'Root@1234' with grant option;
grant select on test.* to 'user04'@'10.10.0.%' identified by 'Root@1234' with grant option;
根据需要进行授权即可
注意:mysql 5.7默认的密码认证加密插件还是mysql_native_password。