手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)

Linux Centos7 安装Mysql5.7 图文详解及相关问题 

目录

一、下载Mysql5.7官方Yum Repository

二、yum方式安装

三、安装Mysql Server

四、启动、查看、重启mysql 服务

五、修改配置初始化密码

1、查看密码策略:SHOW VARIABLES LIKE 'validate_password%';

2、修改密码策略为弱口令:set global validate_password_policy=LOW;

3、修改密码为简单密码: ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

六、使用Navicat连接mysql报错 1130

七、常见问题

1、正常安装,但mysql远程连接不上,原因3306端口被屏蔽

2、mysql大小写敏感问题(实现表名、字段名不区分大小写)

3、使用group by报错(sql_mode=only_full_group_by)


一、下载Mysql5.7官方Yum Repository

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第1张图片

二、yum方式安装

yum -y install mysql57-community-release-el7-10.noarch.rpm

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第2张图片

三、安装Mysql Server

yum -y install mysql-community-server

等待一会,如下说明安装完成

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第3张图片

四、启动、查看、重启mysql 服务

启动:systemctl start  mysqld.service

查看:systemctl status mysqld.service

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第4张图片

重启:systemctl restart  mysqld.service

五、修改配置初始化密码

mysql安装后会初始化root的密码,首次进入后必须修改初始化密码,且输入的密码必须符合中级策略即必须包含大小写字母数字和特殊符号

查看mysql初始化密码: grep "password" /var/log/mysqld.log

以root身份登录:mysql -uroot -p   

输入初始化密码

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第5张图片

修改密码: ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';  注意需要包含大小写字母、数字和符号

如果需要简单密码,可以修改密码策略,按如下步骤:或参考https://blog.csdn.net/hello_world_qwp/article/details/79551789

1、查看密码策略:SHOW VARIABLES LIKE 'validate_password%';

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第6张图片

1)、validate_password_length  固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;

2、修改密码策略为弱口令:set global validate_password_policy=LOW;

3、修改密码为简单密码: ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

六、使用Navicat连接mysql报错 1130

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第7张图片

原因是mysql安装后,默认root用户只能本地访问

开启mysql的远程访问:

grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;

flush privileges;

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第8张图片

再试Navicat,连接成功

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第9张图片

七、常见问题

1、正常安装,但mysql远程连接不上,原因3306端口被屏蔽

解决方法:

虚拟机或物理机可以通过防火墙开放3306端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

[root@localhost ~]# firewall-cmd --reload

云主机可以通过安全策略,具体请查看云主机服务商项目文档或售后

2、mysql大小写敏感问题(实现表名、字段名不区分大小写)

解决办法:

第一步:编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names=1 参数,并设置相应的值 (备注:为0时大小写敏感,为1时大小写不敏感,默认为0)。

(必须是在[mysqld]节点下添加,否则没有效果)

第二步:重启mysql

systemctl restart  mysqld.service

第三步:查看mysql的参数

show variables like '%case%';

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第10张图片

3、使用group by报错(sql_mode=only_full_group_by)

我的报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column '*********' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因是:mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。

       很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

 在sql执行时,输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是group by后面跟着的字段。由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list 和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。

解决方案:

(1)、查看slq_mode:  select @@GLOBAL.sql_mode;

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第11张图片

(2)、在/etc/my.cnf 中添加 

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

手把手带你在Linux(Centos7)下安装Mysql5.7(适合新手)_第12张图片

保存退出后,重启mysql服务

 

 

本文参考:

https://blog.csdn.net/qq_36582604/article/details/80526287

https://blog.csdn.net/qq_29384639/article/details/94379329

https://www.cnblogs.com/trunkslisa/p/9470434.html

https://blog.csdn.net/qq_42175986/article/details/82384160

你可能感兴趣的:(环境部署,Linux,采坑记录)