准备工作
centos7
安装包 https://dev.mysql.com/downloads/mysql/5.7.html#downloads
安装
1、由于CentOs7之后会在系统中自带一个免费的数据库:mariadb,并且它的驱动和mysql的驱动是有冲突的,所以我们必须先要卸载他:
# 查看系统关于mariadb的服务
$ rpm -qa | grep -i mariadb
# 删除关于mariadb的服务
$ yum remove mariadb*
2、由于mysql的server端需要perl语言的支持,因此我们还需要在系统中安装perl支持
$ yum install -y perl
3、需要安装net-tools包:
$ yum install -y net-tools
4、安装MySQL
$ cd /opt
$ mkdir mysql
# 解压安装包
$ tar -xf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar -C mysql
# 由于我们上面解压出来的几个rpm包有依赖关系,所以我们需要按照顺序执行安装:
$ rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
5、修改mysql 的root密码(忘记或不知道密码时也可以这样修改)
5.1、修改为无密码登录
$ vim /etc/my.cnf
# 在文件最后添加:
skip-grant-tables=1
#重启mysql服务
$ systemctl restart mysqld
5.2、修改密码
$ mysql -u root # 使用命令行连接mysql数据库
mysql> use mysql; # 切换到mysql数据库
# 修改root的密码,密码复杂一点
mysql> update user set authentication_string = password('root@123456'), password_expired = 'N', password_last_changed = now() where user ='root';
mysql> exit; # 退出
5.3、恢复密码登录
- 删除 5.2 中新增的skip-grant-tables=1
- 重启服务
5.4、设置root远程连接数据库
$ mysql -u root -p
mysql> use mysql;
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Root@123456'; #
mysql> flush privileges; # 刷新权限
mysql> exit;
6、在防火墙中开启3306端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd --reload
# 查看开启的端口
$ firewall-cmd --zone=public --list-ports
好了,到此你可以通过视图工具远程连接数据库了😏!
7、你可能需要的配置:
mysql5.7的配置文件优化,留着备用,详细参考博客:http://www.mamicode.com/info-detail-2135559.html
####### 慢日志 #######
#开启慢查询日志
slow_query_log=ON
# 慢查询日志存放路径
slow_query_log_file=/data/mysql/my3306/slow.log
# 超过10秒的查询,记录到慢查询日志,默认值10
long_query_time=10
####### bin log #######
# 二进制日志存放路径
log_bin=/data/mysql/my3306/binlog
# binlog格式,复制有3种模式STATEMENT,ROW,MIXED
binlog_format=row
# 只保留最近10天的binlog日志
expire_logs_days=10
# 当master和slave之间的网络中断,slave的I/O-Thread等待5秒,重连master
slave_net_timeout=5
# slave更新mysql.slave_master_info表的时间间隔
sync_master_info=10000
# slave更新mysql.slave_relay_log_info表的时间间隔
sync_relay_log=10000
sync_relay_log_info=10000
#磁盘写入策略
#如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
#如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
#如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
#注意:
# 由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。
innodb_flush_log_at_trx_commit=2
sync_binlog=1000 #开启binlog日志同步功能