不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

MySQL 用户权限相关命令

Posted on 2021-04-15 11:37  三年三班王小朋  阅读(282)  评论(0编辑  收藏  举报

MySQL中的用户和权限的操作命令

一、CREATE创建用户

格式:CREATE USER '用户名'@'客户端地址' IDENTIFIED BY '密码';

示例:

mysql> CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
mysql> CREATE USER 'pig'@'192.168.1.101' IDENTIFIED BY '123456';
mysql> CREATE USER 'pig'@'%';
mysql> select User,Host from mysql.user;   #mysql 查看用户和客户端地址

 

二、GRANT创建并授权用户

格式:GRANT ALL PRIVILEGES ON 数据库."表名" TO 用户名@"IP地址或者域名" IDENTIFIED BY "密码" [WITH GRANT OPTION];

示例:

mysql> grant select,insert,update,delete,create,drop on test.hr to john@192.168.10.1 identified by '123456';  #给主机为192.168.10.1的用户john分配可对数据库test的hr表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

说明:通过GRANT命令创建用户,当数据库存在用户的时候GRANT会对用户进行授权,但当数据库不存在该用户的时候,就会创建相应的用户并进行授权。privileges代表权限select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限

mysql> grant all privileges on *.* to root@"%" identified by "123456" ;
mysql> delete from mysql.user where user="root" and host="%";  

说明:使用all privileges为用户添加所有权限,客户端地址“%”,表示为root分配对所有数据库的远程权限,并设定口令为123456。第二行是彻底删除root用户的远程访问权限 ,可用revoke但是只能删除权限,用户仍然保留


三、设置与更改用户密码

方法1:用UPDATE直接编辑user表
格式:
update mysql.user set password=password('新密码') where user='用户名' and host='客户端地址';  #mariadb中命令
update mysql.user set authentication_string=password('新密码') where user='用户名' and Host ='客户端地址';  #mysql中的命令,mysql.user密码属性是authentication_string

示例:

MariaDB [(none)]> update mysql.user set password=password('123456') where user='root' and host='%';  #mariadb中,root授权远程更改密码为123456
mysql> update mysql.user set authentication_string=password('123321') where user='zabbix' and Host ='localhost';  #mysql5.7版本以后,zabbix用户本地更改密码为123321

方法2:
格式:SET PASSWORD FOR 用户名@'客户端地址'= PASSWORD(新密码);  
示例:

mysql> set password for 'root'@'F%' = password('123456');  #更改root用户命令,在远程端密码为123456

方法3:
格式:ALTER USER 用户名@'客户端地址' INDENTIFIED BY '新密码';

mysql> alter user root@'%' identified by '1234';
mysql> alter user root@'localhost' identified by '1234';

方法4:

格式:mysqladmin -u用户名 -p旧密码 password 新密码

mysql> mysqladmin -uroot -p123456 password 654321 #将原来密码123456改成654321 这个在mysql登录之前更改,并且会出现明文密码告警不建议使用

 

四. 撤销用户权限

格式:REVOKE PRIVILEGES ON 数据库列表 FROM '用户名'@'客户端地址';

mysql> revoke all privileges on *.* from 'pig'@'%';  #撤销pig用户对远程端所有表的权限

注意:
1、REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有INDETIFED BY和WITH GRANT OPTION子句
2、查看用户权限:SHOW GRANTS FOR 用户名@"客户端地址";

mysql> show grants for zabbix

 

3、#撤销用户授权权限:(只有对库做过明确授权才可以撤销对其的权限);revoke命令user部分必须匹配原来 GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT语句授权,然后用REVOKE语句只撤销部分权限。REVOKE语句只删除权限,而不删除用户。即使你撤销了所有权限,在user表中的用户记录依然保留,用户仍然可以连接服务器。要完全删除一个用户,你必须用一条Delete语句明确从user表中删除用户记录
格式:DELETE FROM user Where User="user_name" and Host="host_name";
格式:DROP USER 'user_name'@'host_name';

mysql> delete from mysql.user where user="root" and host="%";   # 删除root用户的远程访问权限
mysql> drop user 'aaa'@'%';  # 删除aaa用户远程登录权限
mysql> flush privileges;  # 刷新权限

 

五、删除用户

命令:

DROP USER 'username'@'host';


操作命令速记

1、显示数据表的结构:DESCRIBE 表名; (DESC 表名)
2、建立数据表: CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
3、删除数据表: DROP TABLE 表名;
4、重命名数据表:ALTER TABLE t1 rename t2;
5、显示表中的记录:SELECT * FROM 表名;
6、往表中插入记录: INSERT INTO 表名 VALUES (”hyq”,”M”);
7、更新表中数据:UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';
8、将表中记录清空:DELETE FROM 表名;
9、用文本方式将数据装入数据表中:LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
10、显示表的定义: SHOW CREATE TABLE tablename   ;
11、数据库备份命令:mysqldump -u用户名 -p密码 -h主机地址  库.