最近在网上看了很多centos下面安装mysql的教程,自己照着安装很多走不通,或者说跟自己的版本不匹配。照着步骤一步一步试发现很多问题,现在安装成功了,将整个过程总结一下。
1.mysql下载
网上有很多下载的连接,有在官网下载的,也有各个论坛下载的。格式也有tar.gz的,也有rpm的安装包,我们这里直接是在服务器上下载的。
下载命令是:
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
如果提示wget: command not found,那么还得先安装wget
执行:yum install wget
下载的时间可能稍微长一点,根据网络的不同有差异
2.mysql安装
安装包:
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
安装mysql:
yum install mysql-server
在这步中只需要一直选择y然后回车就行,数据库就安装好了
3.mysql连接
3.1本地连接:
mysql -uroot -p
输入密码后提示:
ERROR 2002 (HY000): Can't connect to localMySQL server through socket '/var/lib/mysql/mysql.sock'
这是/var/lib/mysql的权限问题,需要修改MySQL权限为当前用户
chown -R xxx:xxx /var/lib/mysql
xxx为当前的用户名以及所属组
重启MySQL服务即可:
service mysqld restart
密码输入root即可
如果还不行的话通过这个命令获得初始密码
cat /var/log/mysqld.log | grep password
其中:A temporary password is generated forroot@localhost: HBjvWoxu(2-V :后面的就是初始密码
可设置密码:
alter user 'root'@'localhost' identified by'root';
3.2远程连接:
为需要远程登录的用户赋予权限
新建用户远程连接mysql数据库
grant all on *.* to root@'%' identified by'abc12345' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用root帐户和密码(abc12345)来访问这个mysql server。
注意root账户不一定要存在。
4.遇到的问题
在数据库安装好之后,执行创建表的ddl时,创建完之后,总是提示下面的报错,
[Err] 1055 - Expression #1 of ORDER BYclause is not in GROUP BY clause and contains nonaggregated column'information_schema.PROFILING.SEQ' which is not functionally dependent oncolumns in GROUP BY clause; this is incompatible withsql_mode=only_full_group_by
网上搜索解决方式:
- 其中一种是:
用sql查询:select @@global.sql_mode
查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
去掉ONLY_FULL_GROUP_BY,重新设置值。
set @@global.sql_mode
=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
但我用这种方式后依旧无效,还是提示上面的报错,但此时用select @@global.sql_mode查询,其实是不包含ONLY_FULL_GROUP_BY的。
- 另一种是:
在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'
在sql_mode 中去掉only_full_group_by
然后再重启:service mysql restart
但我看别人说的my.conf文件是在/etc/mysql/conf.d/下面,而我并没有找到,我在采用在服务器上在线安装的,需要修改的是/etc/下面的my.cnf
问题出现的原因:
MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BYSQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)此段转载自:http://blog.csdn.net/qq_34707744/article/details/78031413
参考:
https://www.jianshu.com/p/0680bf8fa2f9
解决报错:错误1130- Host xxx is not allowed to connect to this MariaDb server