提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
CentOS 7使用RPM安装MySQL5.7
1:下载MySQL5.7的rpm安装包
选择合适的版本,这里我们使用的是MySQL5.7.20;下载完成后发送到自己的CentOS7服务器里,这里
可以通过Xftp上传
进入mysql官网
https://www.mysql.com/
2:卸载已安装的MySQL(没安装过则跳过)
注:卸载之前请关闭mysql服务,命令:
systemctl stop mysqld
按照顺序卸载:
卸载完基本的环境后,我们要清理依赖的文件(数据库配置文件及数据库数据文件)
3:MySQL安装环境准备
卸载mariadb:检查是否安装了mariadb(CentOS7默认安装),如存在则卸载mariadb;如果你
是CentOS6,则默认是MySQL,那么你就卸载MySQL即可。
安装所需依赖:一般都是最新版了,以防万一后面安装出错,缺少依赖。
4:安装我们上传的四个MySQL包并启动
安装时必须严格遵守安装顺序 依赖关系依次为 common → libs → client → server
*注:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验*
启动及查询状态
5:登录安装的MySQL5.7
由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,从而在里 面进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个临时密码
获取数据库临时密码:grep 'temporary password' /var/log/mysqld.log
更改密码:初始化密码只是提供给你登录到内部,而我们进入到内部必须修改密码,否则无法对数
据库操作,就如下图我们无法操作
#new_password替换成自己的密码ALTER USER
‘root’@
‘localhost’
IDENTIFIED BY 'new_password'
;
什么??不符合策略,这里告诉你,密码为8位并且包含特殊字符、大小写字母、数字
如: ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘aaAA$$!!66’ ;
看到上面设置个密码那么复杂,还记不住,那我们修改一下策略(设置LOW并且长度设置为3)
策略解释
0 or LOW
校验级别最低,只校验密码长度,只要长度跟validate_password_length一样即可,默认长度是8位。
1 or MEDIUM
这个时候首先要满足的是validate_password_policy=0时的验证要求。然后现去验证密码中的数字个
数,大小写个数,特殊字符个数。
2 or STRONG
这个时候必须先满足0,1的要求,然后它还追加了一个,对于密码中任意连续4个(或4个让上)字符不得
是字典中的单词(validate_password_dictionary_file)
终于可以设置灵魂密码了 : mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123’;(建议不要设置成这样!!!)
6:创建用户并授权
MySQL中的用户账户由用户名和主机部分组成,要创建MySQL账户语法如下
撤销MySQL用户上的权限:用户帐户撤消一个或多个权限的语法与授予权限时几乎相同。如要通过特定数据库撤消用户帐户的所有权限,请使用以下命令
REVOKE ALL PRIVILEGES ON school.* FROM 'jack'@'%';
删除MySQL用户账户
DROP USER 'jack'@'%';
7:修改my.cnf配置文件 /etc/my.cnf
这个配置比较通用
重启MySQL服务
systemctl restart mysqld
8:忘记mysql密码
一、首先更改my.cnf的配置文件,并重启mysql
在my.cnf文件中的[mysqld] 下加入下面一行,其余不做改变。
二、登录MySQL,此时不需要输入密码,直接回车即可
mysql -uroot -p
三、切换到mysql数据库,查询user表的结构,这里有需要的字段。
在MySQL5.7版本中mysql数据库下已经没有password这个字段了,password字段改成了authentication_string字段。
把这个复制下来,修改密码时会用到,当然也可以手打
四、修改mysql的root密码并退出mysql
五、再次修改my.cnf配置文件,将第一步添加的语句注释或删除,然后重启mysql。
六、用新密码登录mysql
注意:如果不行的话,你可能还需要执行下面这一步。我用的 MySQL5.7 要执行下面一步。
mysql> alter user root@localhost identified by '123';