1、yum仓库下载MySQL:sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
2、yum安装MySQL:sudo yum install mysql-community-server
3、启动MySQL服务:sudo service mysqld start
4、检查MySQL服务状态:sudo service mysqld status
5、查看初始密码(如无内容直接跳过):sudo grep 'temporary password' /var/log/mysqld.log
6、本地MySQL客户端登录:mysql -uroot -p
7、输入密码为第5步查出的,如果没有,直接回车,然后输入命令 flush privileges
8、修改root登录密码:alter user 'root'@'localhost' identified by '密码要有大小写';(注意要切换到mysql数据库,使用use mysql)
注意:开始遇到问题是不输入密码或输错密码都能连接MySQL server,后来在修改允许阿里CentOS7允许远程操作MySQL数据库时,
mysql8.0 安装之后 提示1251错误的错误处理
原因:比较新的mysql采用新的保密方式所以旧的不能用
解决:
打开mysql客户端,执行下面命令
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
才发现需要去调整 /etc/my.cnf文件,注释掉skip-grant-tables,重启MySQL服务(sudo service mysqld restart),quit退出连接,重新连接就需要输入密码了
后期如果忘记密码,可以通过skip-grant-tables配置跳过输入密码登录MySQL,执行7、8步进行修改,如果‘root’@'localhost'变为'root'@'%',那么alter语句中的也要修改
9、配置MySQL允许外部访问:1)首先设置阿里云安全组规则入方向,支持MySQL端口3306可访问(协议类型下拉菜单中有MySQL端口)
2)服务端登录MySQL,use mysql;然后执行select user,host from user可查看用户及对应允许访问主机
然后执行update user set host = '%' where user ='root';允许任何外部可访问;再执行上一步查看命令,可比较结果
10、如此即可连接
补充:show global variables like 'port';可查看MySQL服务端口,如果看到的value为0,则说明没有使用密码登录,需要去修改my.cnf文件;
my.cnf文件也可以通过port=3306来指定MySQL服务端口,重启MySQL服务即可
11、java连接8.0及以上MySQL数据库使用新驱动
这个问题是在我用本地工具可以连同阿里云服务器上的MySQL,而本地用java怎么也连不上,偶然间点开工具测试连接的详细信息发现新的驱动,更改java对应驱动后,连接成功
MySQL sql_mode=only_full_group_by错误 重启有效
解决方式:
登录mysql --> mysql -u root -p
输入密码 -->
select @@sql_mode;
你会看到sql_mode的配置情况:
其中ONLY_FULL_GROUP_BY就是造成这个错误的罪魁祸首了,
对于group by聚合操作,如果在select中的列没有在group by中出现,那么这个SQL是不合法的,因为列不在group by从句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错,
既然知道了问题,那么修改这个配置就可以了,找到MySQL的配置文件,在linux系统上/etc/my.cnf文件,查询sql_mode字段,我并没有在配置文件中找到这个关键字,所以我手动添加进去:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
********需要注意的一点是一定要添加在[mysqld]配置内,
如
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
这样添加完后重启mysql才会生效,退出数据库:exit,重启命令:
*************
service mysqld restart;
刷新页面报错信息消失成功解决,再次连接上数据库查看sql_mode配置select @@sql_mode:
到此已经成功解决了这个问题。