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主机地址 库.表