select host,user from user; #查询用户 drop user 'username'@'localhost'; 删除用户 rename user 'test3'@'%' to 'test1'@'%'; #修改用户名
由于密码字段名称在mysql.user表中在5.7版本时修改了。
#正常状态mysql 修改密码 #方法1: mysql> alter user 'root'@'localhost' identified by '123'; #方法2: mysql> set password for 'root'@'localhost'=password('123'); 记得最后要刷新权限 mysql> flush privileges;
#方法3 mysqladmin -uroot-p123456 password 1234abcd
#以下适用于skip-grant-tables状态mysql重置密码 #方法4 mysql> use mysql; # mysql5.7之前 mysql> update mysql.user set password=password('123456') where user='root'; # mysql5.7之后 mysql> update mysql.user set authentication_string=password('123456') where user='root'; mysql> flush privileges; mysql> shutdown;
[mysqld]
skip-grant-tables
create database test_db default character set utf8mb4 collate utf8mb4_unicode_ci; create database test_can_del default character set utf8mb4 collate utf8mb4_unicode_ci;
用户详情的权限列表请参考MySQL官网说明:privileges-provided
可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。
#需要有赋权grant权限的用户才可以执行。 grant all privileges on *.* to 'username'@'%' identified by 'password'; #仅不赋予grant权限 grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option; #赋予所有权限(包括grant) flush privileges;#使权限修改生效。 show grants for 'username'@'localhost'; #显示指定范围的用户权限 revoke createon *.* from 'username'@localhost'; #回收指定范围的用户权限 flush privileges;#使权限修改生效。
code | help |
---|---|
all privileges | 表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。 |
on | 表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user |
to | 将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制(其实是个 host 通配符),,在任何主机都可以登录。比如:”username”@”192.168.0.%”,表示username这个用户只能在192.168.0IP段登录 |
identified by | 指定用户的登录密码 |
with grant option | 表示允许用户将自己的权限授权给其它用户 |
Table 1 Permissible Privileges for GRANT and REVOKE privileges-provided
Privilege | Grant Table Column | Context |
---|---|---|
ALL [PRIVILEGES] | Synonym for “all privileges” | Server administration |
ALTER | Alter_priv | Tables |
ALTER ROUTINE | Alter_routine_priv | Stored routines |
CREATE | Create_priv | Databases, tables, or indexes |
CREATE ROUTINE | Create_routine_priv | Stored routines |
CREATE TABLESPACE | Create_tablespace_priv | Server administration |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | Tables |
CREATE USER | Create_user_priv | Server administration |
CREATE VIEW | Create_view_priv | Views |
DELETE | Delete_priv | Tables |
DROP | Drop_priv | Databases, tables, or views |
EVENT | Event_priv | Databases |
EXECUTE | Execute_priv | Stored routines |
FILE | File_priv | File access on server host |
GRANT OPTION | Grant_priv | Databases, tables, or stored routines |
INDEX | Index_priv | Tables |
INSERT | Insert_priv | Tables or columns |
LOCK TABLES | Lock_tables_priv | Databases |
PROCESS | Process_priv | Server administration |
PROXY | See proxies_priv table | Server administration |
REFERENCES | References_priv | Databases or tables |
RELOAD | Reload_priv | Server administration |
REPLICATION CLIENT | Repl_client_priv | Server administration |
REPLICATION SLAVE | Repl_slave_priv | Server administration |
SELECT | Select_priv | Tables or columns |
SHOW DATABASES | Show_db_priv | Server administration |
SHOW VIEW | Show_view_priv | Views |
SHUTDOWN | Shutdown_priv | Server administration |
SUPER | Super_priv | Server administration |
TRIGGER | Trigger_priv | Tables |
UPDATE | Update_priv | Tables or columns |
USAGE | Synonym for “no privileges” | Server administration |