1.环境配置
①安装环境:华为云ECS云服务器
②关闭防火墙:
[~] # systemctl stop firewalld --关闭防火墙
[~] # service firewalld status --查看防火墙状态
③禁用fastestmirror插件的加速:
[~] # vi /etc/yum/pluginconf.d/fastestmirror.conf
enabled=0 --由1改为0,禁用该插件
[~] # vi /etc/yum.conf
plugins=0 --由1改为0,不使用该插件
④清除缓存并查询构建yum源
[~] # yum clear all
[~] # yum clear dbcache
[~] # yum makecache
2.安装mysql
①下载yum源:
--官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
[~] # wget -c http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
②使用localinstall安装mysql源:
[~] # yum localinstall mysql57-community-release-el7-8.noarch.rpm -y
--查看mysql源是否安装成功:
[~] # yum repolist enabled | grep "mysql.*-community.*"
③安装mysql时可改变版本
[~] # vim /etc/yum.repos.d/mysql-community.repo --修改源配置,比如安装5.6的,将5.6的enable改为1,将5.7的enable给为0即可
④安装mysql:
[~] # yum install mysql-community-server --安装mysql
[~] # systemctl start mysqld --启动mysql服务
[~] # service mysqld status --查看mysql启动状态
[~] # sysytemctl enable mysqld [~] # systemctl daemon-reload --设置开机启动
3.修改mysql的本地root密码
①登录mysql
[~] # grep 'temporary password' /var/log/mysqld.log -- 查询安装完成后的root默认密码
[~] # mysql -uroot -p -- 使用查询到的默认密码登录mysql
②修改mysql的root默认密码:
--mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR
1819 (HY000): Your password does not satisfy the current policy requirements错误
[~] mysql> set password for 'root'@'localhost'=password('新密码')
③用户操作
-- 修改用户密码:5.7前
[~] mysql> update mysql.user set password=password('新密码') where User="yangzz" and Host="localhost";
-- 修改用户密码:5.7后
[~] mysql> update user set authentication_string=password('123456') where user='root';
[~] mysql> flush privileges;
-- 删除指定用户
[~] mysql> delete from user where User='yangzz' and Host='localhost';
-- 用户重命名
[~] mysql> rename user 'p1'@'%' to 'p2'@'%';
4.添加远程账号
①添加新的账号作为远程账号:
语法:GRANT privileges(columns) ON databases_name.tables TO user_name@host IDENTIFIED BY password WITH GRANT OPTION;
[~] mysql> grant all privileges on *.* to 'yangzz'@'%'identified by 'Yangzz123!' with grant option;
参数说明:
--privileges:授予用户的权限,可省略(更多权限请参考MySQL数据下的user表)。
{
Alter (修改表和索引 )
Create(创建数据库和表 )
Delete (删除表中已有的记录 )
Drop (抛弃(删除)数据库和表 )
INDEX (创建或抛弃索引 )
Insert ( 向表中插入新行 )
REFERENCE (未用 )
Select (检索表中的记录 )
Update ( 修改现存表记录 )
FILE (读或写服务器上的文件 )
PROCESS ( 查看服务器中执行的线程信息或杀死线程 )
RELOAD (重载授权表或清空日志、主机缓存或表缓存。)
SHUTDOWN(关闭服务器 )
ALL (所有;ALL PRIVILEGES同义词 )
USAGE (特殊的“无权限”权限)
}
--columns:用户可用的权限设置列,可选,多个以逗号隔开(参照privileges权限参数进行配置)。
--databases_name:用户指定可见操作数据库级别,可针对服务器上数据库及数据表进行设置,可见当前服务器上所有数据库配置为:*.* ,指定单个数据库配置为:DBName.*,指定单个库中的表配置:DBName.表名
--user_name:数据库登录名。
--password:数据库登录名对应的密码
--GRANT OPTION:让授权的用户,也可以将这些权限 grant 给其他用户,需要在最后添加选项 “grant option”。
常用配置语句:
1.查看用户权限
mysql> show grants for username;
2.查看自身用户权限
mysql> show grants;
3.赋予用户developer对Testdb数据库下所有表的CRUD操作,grant 作用在单个数据表上
mysql> grant select, insert, update, delete on Testdb.* to 'developer'@'%';
4.创建、修改、删除 MySQL 数据表结构权限
grant create,alter,drop on Testdb.* to 'developer'@'192.168.0.%';
5.操作外键权限
grant references on testdb.* to 'developer'@'192.168.0.%';
6.操作临时表
grant create temporary tables on testdb.* to 'developer'@'192.168.0.%';
7.操作 MySQL 索引权限:拥有index权限,才能执行[create |drop] index
grant index on testdb.* to 'developer'@'192.168.0.%';
8.操作 MySQL 视图、查看视图源代码 权限
grant create view on testdb.* to developer@'192.168.0.%';
grant show view on testdb.* to developer@'192.168.0.%';
9.操作 MySQL 存储过程、函数 权限
grant create routine on testdb.* to 'developer'@'192.168.0.%'; -- now, can show procedure status
grant alter routine on testdb.* to 'developer'@'192.168.0.%'; -- now, you can drop a procedure
grant execute on testdb.* to 'developer'@'192.168.0.%';
10.操作 MySQL 视图、查看视图源代码 权限
grant create view on testdb.* to 'developer'@'192.168.0.%';
grant show view on testdb.* to 'developer'@'192.168.0.%';
11.grant 作用在整个 MySQL 服务器上
grant select on *.* to 'dba'@'localhost'; -- dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to 'dba'@'localhost'; -- dba 可以管理 MySQL 中的所有数据库
12.grant 作用在单个数据库上:
grant select on testdb.* to 'dba'@'localhost'; -- dba 可以查询 testdb 中的表。
13.给一个用户授权多张表时,可以多次执行以上语句
grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345';
grant select on smp.mo_sms to mo_user@'%' identified by '123345';
14.grant 作用在存储过程、函数上,执行存在的Functions,Procedures
grant execute on procedure testdb.pr_add to 'dba'@'localhost'
grant execute on function testdb.fn_add to 'dba'@'localhost'
15.撤销已经赋予给 MySQL 用户权限的权限
revoke all on *.* from dba@localhost;
16.作用于replication client权限,拥有此权限可以查询master server、slave server状态
mysql> show master status;
ERROR 1227 (42000): Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation
mysql> grant Replication client on *.* to 'dba'@'localhost';
17.replication slave,拥有此权限可以查看从服务器,从主服务器读取二进制日志
mysql> grant replication slave on *.* to 'dba'@'localhost';
mysql> show slave hosts;
Empty set (0.00 sec)
mysql>show binlog events;
18.super,这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS
mysql> grant super on *.* to 'dba'@'localhost';
mysql> purge master logs before ‘mysql-bin.000006′;--删除MySQLmysql-bin.000006之前的二进制日志
--删除MySQL二进制日志命令
PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
PURGE MASTER LOGS TO 'mysql-bin.******'命令,是将'******'编号之前的所有日志
--查看日志
mysql> show binary logs;
--删除bin-log(删除mysql-bin.000018之前的所有二进制日志文件)
mysql> purge binary logs to 'mysql-bin.000018';
mysql> show binlog events; //查看日志
--设置日志过期时间:
expire_log_day=5
--linux系统可以使用rm删除,删除二进制日志,启动服务
# c -rf /mybinlog/*
# netstat -tnlp 查看启动的mysql进程号
# kill 2523 (注意,如果在备份之前mysql服务是开启的,重启是不成功的,需要把这个进程先kill掉)
# service mysqld restart
19.process,配置这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程
mysql> grant process on *.* to 'dba'@'localhost';
mysql> show processlist;
注:管理权限(如 super, process, file等)不能够指定某个数据库,on后面必须跟*.*
②已root作为远程账号:
[~] mysql> grant all privileges on *.* to 'root'@'%'identified by 'Abc123456!' with grant option;
注: 'root'@'%'中的%号表示当前服务器地址可以被远程访问,如果是'root'@'localhost'表示只能本地访问
③重启mysql用户权限配置,是grant设置生效
[~] mysql> flush privileges ;
④关闭mysql配置的访问限制
[~] # vi /etc/my.cnf -- 将bind-address = 127.0.0.1进行注释:# bind-address = 127.0.0.1
5.修改mysql的编码配置为UTF8
!添加的配置后面不能加";"号,否则mysqld服务启动不起来
[~] # vi /etc/my.cnf -- 打开mysql配置添加如下
--重启服务,查看配置编码
[~] # service mysqld restart --重启mysql服务
[~] # mysql -uroot -p --登录mysql
[~] mysql> show variables like '%character%'; --查看mysql编码是否修改
6.华为云添加mysql3306端口提供Navicat工具远程访问
①弹性云服务器ESC配置mysql端口3306
--直接可在对应的服务器列表信息中点击:更多 - 更改安全组,其他操作同云耀服务器
②云耀云服务器配置mysql端口3306
--点击服务器进行编辑
-- 更改安全组 - 新建安全组
-- 快速添加规则 - sys-default
7.MySql密码策略
[~] mysql> show variables like '%password%';
--部分参数说明:
validate_password_policy:密码策略,默认为MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
官网密码解释:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
--策略分类
--修改密码策略
[~] # vi etc/my.cnf -- 添加validate_password_policy配置,指定密码策略
validate_password_policy=0 -- 0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password=off -- 禁用密码策略
[~] # service mysqld restart -- 重启mysql服务使配置生效
8.其他问题
-- 安装mysql-community-server遇到错误:Error:Nothing to do
--更新yum源进行重新安装:
[~] # yum update -y -- 更新yum源,VMware上更新虚拟机下的yum需谨慎
9.参考资料
①http://www.linuxidc.com/Linux/2016-09/135288.htm
②https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
③https://www.runoob.com/note/19873
④https://blog.csdn.net/anzhen0429/article/details/78296814