如何创建MySQL用户并授予权限
时间:2019-11-20 08:53:47 来源:igfitidea点击:
如何创建MySQL用户帐户并授予权限?
安装mysql客户端
根据Linux发行版安装mysql客户端。
Debian/Ubuntu Linux上安装mysql客户端
$ sudo apt install mysql-client
CentOS/RHEL上安装mysql客户端
$ sudo yum install mysql
Fedora Linux上安装mysql客户端
$ sudo dnf install mysql
如何连接mysql服务器:
使用mysql命令
$ mysql -u {USER_NAME} -h {MySQL-SERVER-IP} -P {MYSQL_PORT} -p
例如:
$ mysql -u root -h 192.168.1.100 -P 3306 -p
如何创建MySQL用户帐户并授予权限
这里,我将以root用户身份登录:
$ mysql -u root -h 192.168.1.100 -P 3306 -p
创建一个新的数据库
如果没有数据库,创建一个新MySQL数据库:
mysql> CREATE DATABASE theitroad_blog; Query OK, 1 row affected (0.00 sec)
创建一个新的MySQL用户帐户
为数据库theitroad_blog创建一个用户
mysql> CREATE USER 'Hyman'@'%' IDENTIFIED BY 'password123'; Query OK, 0 rows affected (0.01 sec)
或者强制使用SSL连接:
mysql> CREATE USER 'tom'@'%' IDENTIFIED BY 'password123' REQUIRE SSL; Query OK, 0 rows affected (0.01 sec)
%表示tom使用任何客户端/服务器IP都可以连接MySQL服务器。
我们可以限制只能某个IP或者子网访问,增加安全性。
## EC2/Lightsail server IP address/client ## mysql> CREATE USER 'Hyman'@'172.26.9.11' IDENTIFIED BY 'password'; ## VPC sub/net client example for 172.26.0.0/20 ## mysql> CREATE USER 'Hyman'@'172.26.0.0/255.255.240.0' IDENTIFIED BY 'passwd';
如果要强制现有的MySQL用户帐户使用SSL连接,使用ALTER语句修改:
mysql> ALTER USER 'user_name'@'client_ip' REQUIRE SSL; mysql> ALTER USER 'Hyman'@'%' REQUIRE SSL;
查看用户当前的权限:
mysql> SHOW GRANTS for userName; mysql> SHOW GRANTS for Hyman;
授予MySQL用户帐户权限
权限可以分为几类:
数据使用权限
包括:SELECT,INSERT,UPDATE,DELETE和FILE结构特权
包括:CREATE,ALTER,INDEX,DROP,CREATE TEMPORARY TABLES,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EXECUTE,CREATE VIEW,EVENT和TRIGGER管理特权
包括:GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES, REFERENCES, REPLICATION CLIENT, REPLICATION SLAVE 和 CREATE USERSSL特权
包括:EQUIRE NONE, REQUIRE SSL, REQUIRE X509ALL PRIVILEGES
:授予mysql用户帐户所有特权
授予用户不同权限的语法如下:
GRANT permission ON DB_NAME.TABLE_NAME TO 'userNameHere'@'client_ip'; GRANT permission1,permission2 ON DB.TABLE TO 'userNameHere'@'client_vpc_sub_net';
例如:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON blog.* TO 'Hyman'@'%'; mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON blog.* TO 'Hyman'@'172.26.0.0/255.255.240.0';
授予各种结构特权:
mysql> GRANT CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `blog`.* TO 'Hyman'@'%';
授予所有特权:
mysql> GRANT ALL PRIVILEGES ON `blog`.* TO 'Hyman'@'%';
刷新权限:
mysql> FLUSH PRIVILEGES;
如何撤销MySQL用户帐户的权限
REVOKE SQL语句用于撤消/回收MySQL用户的权限。
语法为:
mysql> REVOKE ALL PRIVILEGE1,PRIVILEGE2 ON database.* FROM 'user'@'client_ip'; mysql> REVOKE ALL PRIVILEGES ON database.* FROM 'user'@'vpc_sub_net'; mysql> REVOKE INSERT, DELETE ON blog.* FROM 'sai'@'%'; mysql> REVOKE ALL PRIVILEGES ON blog.* FROM 'sai'@'%';