|
主题设置

卡片式面板通常用于非白色背景色的主体内

用户操作

在MySQL中,可以对用户进行新建、授权、删除、修改密码等操作,通常只有具有超级用户或管理员权限的用户才能进行这些操作。

MySQL 5.X

--MySql 安装完成后,默认有 4 个数据库,其中一个数据库名称就叫 mysql
--访问 mysql 数据库创建用户(所有用户可在 mysql.user 表中查询)
--'gushengbin'@'%':指定要创建的用户名和允许访问的主机。在这里'gushengbin' 是用户名,'%' 表示允许从任何主机进行访问。您也可以使用具体的 IP 地址或主机名来限制访问。
CREATE USER 'gushengbin'@'%' IDENTIFIED BY '123456';

-- 给用户赋予权限的语法
-- 当 PRIVILEGE1,PRIVILEGE2 被 ALL PRIVILEGES 或者 ALL 代替的时候,表示赋予用户全部权限
-- 当 databaseName.tableName 被 *.* 代替的时候,表示赋予用户操作服务器上所有数据库所有表的权限
-- 当 databaseName.tableName 被 databaseName.* 代替的时候,表示赋予用户操作 databaseName 数据库中所有表的权限
-- address 可以是 localhost、ip 地址、机器名字、域名,也可以用 % 表示任何地址
-- WITH GRANT OPTION 表示授予用户可以给其他用户授权的权限
GRANT PRIVILEGE1,PRIVILEGE2 ON databaseName.tableName TO userName@address IDENTIFIED BY 'password' WITH GRANT OPTION;

--将所有数据库、以及里面所有对象的所有权限赋给该用户
GRANT ALL PRIVILEGES ON *.* TO 'gushengbin'@'%' IDENTIFIED BY '123456';

--将某个数据库、以及里面所有对象的所有权限赋给该用户
GRANT ALL PRIVILEGES ON gushengbin.* TO 'gushengbin'@'%' IDENTIFIED BY '123456';

--将 test 数据库中 employee 表的插入、删除、更新、查询、创建(比如创建索引、视图等)、删除(比如删除索引、视图等)权限授予给 192.168.100.100 地址的张三用户
GRANT INSERT,DELETE,UPDATE,SELECT,CREATE,DROP ON test.employee TO zhangsan@192.168.100.100 IDENTIFIED BY '123';

--收回用户权限
REVOKE INSERT,DELETE,UPDATE,SELECT ON test.* FROM chushiyan@localhost;
REVOKE ALL ON test.* FROM chushiyan@localhost;

--刷新权限
FLUSH PRIVILEGES;

--查看当前用户的权限
SHOW GRANTS;

--查询指定用户在指定地址上的权限
SHOW GRANTS FOR zhangsan@192.168.100.100;

--修改用户密码(不一定是@'localhost',需要看mysql数据库中,user表里对应用户的host是什么)
ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';

MySQL 8.X

--MySql 安装完成后,默认有 4 个数据库,其中一个数据库名称就叫 mysql
--访问 mysql 数据库创建用户(所有用户可在 mysql.user 表中查询)
--'gushengbin'@'%':指定要创建的用户名和允许访问的主机
--'gushengbin' 是用户名,'%' 表示允许从任何主机进行访问,当然也可以使用具体的 IP 地址或主机名来限制访问。
--IDENTIFIED BY 只能在创建用户的时候指定,不能在赋权语句 GRANT 中出现,因为 MySQL 8.X 中已经将创建用户和赋权分开
CREATE USER 'gushengbin'@'%' IDENTIFIED BY '123456';

-- 给用户赋予权限的语法
-- 当 PRIVILEGE1,PRIVILEGE2 被 ALL 代替的时候,表示赋予用户全部权限(不能用 ALL PRIVILEGES,会报错)
-- 当 databaseName.tableName 被 *.* 代替的时候,表示赋予用户操作服务器上所有数据库所有表的权限
-- 当 databaseName.tableName 被 databaseName.* 代替的时候,表示赋予用户操作 databaseName 数据库中所有表的权限
-- address 可以是 localhost、ip 地址、机器名字、域名,也可以用 % 表示任何地址
-- WITH GRANT OPTION 表示授予用户可以给其他用户授权的权限
GRANT PRIVILEGE1,PRIVILEGE2 ON databaseName.tableName TO userName@address WITH GRANT OPTION;

--将所有数据库、以及里面所有对象的所有权限赋给该用户
GRANT ALL ON *.* TO 'gushengbin'@'%';

--将某个数据库、以及里面所有对象的所有权限赋给该用户
GRANT ALL ON gushengbin.* TO 'gushengbin'@'%';

--将 test 数据库中 employee 表的插入、删除、更新、查询、创建(比如创建索引、视图等)、删除(比如删除索引、视图等)权限授予给 192.168.100.100 地址的张三用户
GRANT INSERT,DELETE,UPDATE,SELECT,CREATE,DROP ON test.employee TO 'zhangsan'@'192.168.100.100';

--收回用户权限
REVOKE INSERT,DELETE,UPDATE,SELECT ON test.* FROM chushiyan@localhost;
REVOKE ALL ON test.* FROM chushiyan@localhost;

--刷新权限
FLUSH PRIVILEGES;

--查看当前用户的权限
SHOW GRANTS;

--查询指定用户在指定地址上的权限
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS FOR 'root'@'192.168.100.100';
SHOW GRANTS FOR 'root'@'%';

--修改用户密码(不一定是@'localhost',需要看mysql数据库中,user表里对应用户的host是什么)
ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';