一、环境介绍
操作系统:CentOS 7
MySQL:5.7
二、MySQL卸载
# 查看软件
rpm -qa|grep mysql
# 卸载MySQL
yum remove -y mysql mysql-libs mysql-common
rm -rf /var/lib/mysql
rm /etc/my.cnf
继续查看是否还有 MySQL 软件,有的话继续删除。
一个一个将上面的文件删除
rpm -e mysql-community-common-5.7.44-1.el7.x86_64
软件卸载完毕后如果需要可以删除 MySQL 的数据库: /var/lib/mysql
三、MySQL安装
3.1 安装
#下载yum源
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
#安装yum源
yum -y install mysql57-community-release-el7-11.noarch.rpm
#使用此命令可以查看 MySQL Yum 存储库中的所有子存储库,并查看其中哪些子存储库已启用或禁用
yum repolist all | grep mysql
#关闭mysql8的下载源
yum-config-manager --disable mysql80-community
#开启mysql5.7下载源
yum-config-manager --enable mysql57-community
#安装mysql5.7
yum install -y mysql-community-server --nogpgcheck
3.2 配置
vim /etc/my.cnf
修改内容如下
[mysqld]
# MySQL设置大小写不敏感:默认:区分表名的大小写,不区分列名的大小写
# 0:大小写敏感 1:大小写不敏感
lower_case_table_names=1
# 默认字符集
character-set-server=utf8
3.3 启动
systemctl start mysqld
3.4 设置root用户密码
安装了mysql5.7之后初始密码不再默认为空,初始密码会生成一个默认密码。密码会输出到mysql日志中。日志文件的位置在 /var/log/mysqld.log
查看初始密码
cat /var/log/mysqld.log | grep password
查询结果如下:
最后一个临时密码就是.
修改初始密码
#1.根据临时密码,登录mysql
mysql -uroot -p
#2.设置密码长度最低位数
set global validate_password_length=4;
#3.设置密码强度级别
set global validate_password_policy=0;
#4.修改密码
alter user 'root'@'localhost' identified by 'Aa123456';
MySQL 的密码规则可以通过系统变量 validate_password_policy 来设置,该变量的取值范围为0、1、2,默认值为1。
validate_password_policy取值说明:
-
0(LOW):只校验密码长度。
-
1(MEDIUM):校验密码长度、大小写和特殊字符。
-
2(STRONG):校验密码长度、大小写、特殊字符和字典文件。
四、远程连接MySQL授权
创建用户授权流程:
4.1 创建用户
创建用户基本语法
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
示例:
# 只能在MySQL服务器登录
CREATE USER 'xh'@localhost IDENTIFIED BY '12345678';
# or 只能在指定ip登录
CREATE USER 'xh'@'192.168.10.1' IDENTIFIED BY '12345678';
# or 在所有ip都可以登录
CREATE USER 'xh'@'%' IDENTIFIED BY '12345678';
4.2 授权
授权用户基本语法
GRANT privileges ON database.table TO 'username'@'host';
对应的参数如下:
privileges
:要授予的权限列表,可以是一个或多个权限,用逗号分隔database
:数据库名table
:表名,可以使用通配符*表示所有数据库或所有表'username'@'host'
:用户及其允许连接的主机
常见的权限如下:
示例:
# 授予多种权限:
# 授予user1对mydatabase数据库中所有表的SELECT、INSERT和UPDATE权限:
GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'user1'@'localhost';
# 授予所有权限:
# 授予user1对mydatabase数据库中所有表的所有权限:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'user1'@'localhost';
或
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 授予全局权限:
# 授予user1全局CREATE和DROP权限:
GRANT CREATE, DROP ON *.* TO 'user1'@'localhost';
4.3 刷新权限,使授权生效
FLUSH PRIVILEGES;