1.下载MySQL5.7.18的rpm包
2.解压压缩包,解压出来的包里有如下几个rpm包:
mysql-community-common-5.7.18-1.el6.x86_64.rpm
mysql-community-libs-5.7.18-1.el6.x86_64.rpm --(依赖于common)
mysql-community-client-5.7.18-1.el6.x86_64.rpm --(依赖于libs)
mysql-community-server-5.7.18-1.el6.x86_64.rpm --(依赖于client、common)
3.最简单的安装mysql-server服务,只需要安装如下4个软件包即可,使用rpm -ivh命令进行安装
[root@test1 ~]#rpm -ivhmysql-community-common-5.7.18-1.el6.x86_64.rpm --nodeps --force
[root@test1 ~]#rpm -ivhmysql-community-libs-5.7.18-1.el6.x86_64.rpm --nodeps --force
[root@test1 ~]#rpm -ivhmysql-community-client-5.7.18-1.el6.x86_64.rpm --nodeps --force
[root@test1 ~]#rpm -ivhmysql-community-server-5.7.18-1.el6.x86_64.rpm --nodeps --force
4.初始化数据库
[root@test1 ~]#mysqld --initialize 官网推荐此方法,执行后会在/var/log/mysqld.log生成随机密码
5.启动数据库
[root@test1 ~]#service mysqldstart
6.根据第5步中的密码登录到mysql,更改root用户的密码,新版的mysql在第一次登录后更改密码前是不能执行任何命令的
[root@test1 ~]#mysql -uroot -p')j#)=uA2jcxH'
mysql> setpassword=password('root/123456');
最后需要特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了,
而是将加密后的用户密码存储于authentication_string字段
MySQL5.7新装后进入数据库后报权限不足问题
mysql>show databases;
ERROR 1820 (HY000):You must reset your password using ALTER USER statement before executing thisstatement.
解决办法:
停止数据库:
[root@test1 ~]#service mysqld stop
[root@test1 ~]#mysqld_safe--user=mysql --skip-grant-tables --skip-networking &
进入mysql数据库:
[root@test1 ~]#mysql
更改密码:
mysql>update mysql.user setauthentication_string=password('123456') where user='root' and Host = 'localhost';
刷新授权表
mysql>flush privileges;
切换至mysql库
mysql>use mysql;
mysql>alter user 'root'@'localhost'identified by '123456';
或者
mysql>setauthentication_string for 'root'@'localhost'=password('123456');
刷新授权表
mysql>flush privileges;
重启mysql
[root@test1 ~]#service mysqld start
创建MySQL用户时报如下错误:
mysql> grant replication slave on *.* to 'repl_user'@'192.168.58.2' identifiedby 'repl_passwd';
ERROR 1819 (HY000):Your password does not satisfy the current policy requirements
这是由于MySQL5.7以后密码策略变了,不允许存在弱密码,将MySQL密码策略进行修改。
mysql> setglobal validate_password_policy=0;
Query OK, 0 rowsaffected (0.00 sec)
mysql> setglobal validate_password_length=1;
Query OK, 0 rowsaffected (0.00 sec)
刷新一下授权表。
mysql> flushprivileges;
Query OK, 0 rowsaffected (0.00 sec)