菜鸟的问题
好记性不如烂笔头~。~

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.6enable改为1,将5.7enable给为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 (特殊的“无权限”权限)
}
View Code

   --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后面必须跟*.*
View Code

②已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

posted on 2020-03-18 09:51  ArSang-Blog  阅读(87)  评论(0编辑  收藏  举报