1.首先卸载掉centos原有的mysql;
2.下载安装mysql5.7.10
安装过程:
安装mysql:
rpm -ivh mysql-community-server-5.7.19-1.el6.x86_64.rpm --force --nodeps
--force --nodeps是为了保证由于没有key导致安装失败的参数
安装libs
rpm -ivh mysql-community-libs-5.7.10-1.el6.x86_64.rpm
安装common
rpm -ivh mysql-community-common-5.7.10-1.el6.x86_64.rpm
注意:安装common前删除/usr/share/mysql/下的文件
3.配置my.cnf
[mysqld]
datadir=/data/mysql/lib
socket=/data/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
explicit_defaults_for_timestamp=1
default_password_lifetime=0
#skip-grant-tables
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_safe]
log-error=/data/mysql/log/mysqld.log
pid-file=/data/mysql/run/mysqld/mysqld.pid
注意:配置的路径中非mysql默认的路径,需要手动创建文件夹
explicit_defaults_for_timestamp的配置是为了防止一个timestamp的警告添加的配置
启动:
service mysqld start
4.登录mysql修改密码
在配置中添加skip-grant-tables可以允许免密登录,也可以使用启动时给的临时密码,不过在我这里临时密码一直报过期的问题。
登录后修改root密码,同时将密码设置为不会过期:
update mysql.user set authentication_string=password('newPass') where user='root' ;
update user set password_expired='N' where user='root';
flush privileges;
配置中也需要添加default_password_lifetime=0
需要远程登录root的话要添加root@%的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'newPass' WITH GRANT OPTION;
flush privileges;
这就基本可以进行数据的使用了
5.执行查询时的问题
在执行select的时候如果有order by子句,但是没有把所有的列都写到order by中的话会报1055的错,解决方法如下:
在/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"
重启mysql,之后就不会报错了。