MySQL用户管理、用户授权与权限及设置远程访问

2022-12-02 14:51:25 浏览数 (1)

一、用户管理

mysql用户管理即用户的增删改查操作。

1、创建用户

insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

这样就创建了一个名为:test 密码为:1234 的用户。此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。

2、删除用户

Delete FROM user Where User='test' and Host='localhost';

flush privileges;

drop database testDB; //删除用户的数据库

删除账户及权限:>drop user 用户名@'%';

        >drop user 用户名@ localhost; 

3、修改用户密码

第一种:update mysql.user set password=password('新密码') where User="test" and Host="localhost";

第二种:mysqladmin -u -username -p password "new_password"

忘记密码:如果root用户密码丢失了,会给用户造成很大的麻烦。但是,可以通过某种特殊方法登录到root用户下,然后修改密码。

a、使用--skip-grant-tables选项启动MySQL服务

该选项将使MySQL服务器停止权限判断,任何用户都能够访问数据库。

在Windows操作系统下,使用mysqlid或mysqlid-nt来启动MySQL服务。

mysqld命令:

mysqld --skip-grant-tables

mysqld-nt命令:

mysqld-nt --skip-grant-tables

net start mysql命令:

net start mysql --skip-grant-tables

b、登录root用户,并且设置新密码

mysql -u root

必须使用UPDATE语句更新mysql数据库下的user表,而不能使用SET语句,因为--skip-grant-tables不能使用SET语句。

修改完密码以后,FLUSH PRIVILEGES语句加载权限表,新密码即生效。

4、查看用户

use mysql; select * from user;

二、用户授权

授权命令常用格式如下:

命令

作用

GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名

对某个特定数据库中的特定表单给予授权。

GRANT 权限 ON 数据库.* TO 用户名@主机名

对某个特定数据库中的所有表单给予授权。

GRANT 权限 ON *.* TO 用户名@主机名

对所有数据库及所有表单给予授权。

GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名

对某个数据库中的所有表单给予多个授权。

GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名

对所有数据库及所有表单给予全部授权,(谨慎操作)。

1、查看权限:show grants for '用户'@'IP地址' 2、授权grant  权限 on 数据库.表 to   '用户'@'IP地址' 3、取消授权revoke 权限 on 数据库.表 from '用户名'@'IP地址' 授权实例如下:grant all privileges on db1.tb1 TO '用户名'@'IP' grant select on db1.* TO '用户名'@'IP' grant select,insert on *.* TO '用户名'@'IP'

grant select,insert on *.* TO '用户名'@'%' revoke select on db1.tb1 from '用户名'@'IP'

例子:

授权root用户拥有所有数据库的所有权限(某个数据库的所有权限):

 mysql>grant all privileges on *.* to root@localhost identified by '123456';

mysql>flush privileges;//刷新系统权限表

三、用户权限

MySQL权限如下表

权限名字

权限说明

Context

CREATE

允许创建新的数据库和表

Databases, tables, or indexes

DROP

允许删除现有数据库、表和视图

Databases, tables, or views

GRANT OPTION

能够把自己获得的权限转赠给其他用户一个副本

Databases, tables, or stored routines

LOCK TABLES

允许使用显式锁表的语句锁表,前提是你必须有SELECT权限

Databases

REFERENCES

MySQL 5.7.6之前引用特权是未使用的。5.7.6,创建一个外键约束需要引用父表的特权。

Databases or tables

EVENT

The EVENT privilege is required to create, alter, drop, or see events for the Event Scheduler.

Databases

ALTER

允许修改权限或重命名表

Tables

DELETE

允许从表中或数据库中删除行

Tables

INDEX

允许创建或删除索引

Tables

INSERT

允许在表和数据库中插入行

Tables or columns

SELECT

允许在表和数据库这查询行

Tables or columns

UPDATE

允许在表和数据空中更新行

Tables or columns

CREATE TEMPORARY TABLES

允许创建和使用临时表

Tables

TRIGGER

允许使用触发器相关,前提是你必须拥有这个表的CREATE、DROP、EXECUTE或者Display权限

Tables

CREATE VIEW

允许使用CREATE VIEW语句

Views

SHOW VIEW

允许使用SHOW VIEW语句

Views

ALTER ROUTINE

ALTER ROUTINE允许你修改存储过程(过程或函数)前提是你需要在存储过程上拥有ALTER或DROP权限

Stored routines

CREATE ROUTINE

ALTER ROUTINE允许你创建存储过程(过程或函数)前提是你需要在存储过程上拥有ALTER或DROP权限

Stored routines

EXECUTE

允许你执行存储过程(过程或函数)

Stored routines

FILE

文件读写权限允许你文件在服务器主机上使用LOAD DATA INFILE and SELECT 语句以及LOAD DATA()函数

File access on server host

CREATE TABLESPACE

允许创建表空间,前提是你需要CREATE、ALTER OR DROP tablespaces 以及属于log file 组

Server administration

CREATE USER

允许使用ALTER USER, CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES 语句

Server administration

PROCESS

允许使用SHOW PROCESSLIST or mysqladmin processlist看到线程属于其他账户,你总能看到自己的线程。PROCESS权限还允许使用SHOW ENGINE语句

Server administration

PROXY

Server administration

RELOAD

允许使用FLUSH语句,以及mysqladmin命令中对于FLUSH的操作例如:flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload.

Server administration

REPLICATION CLIENT

是否有权限去请求复制相关主数据库产生的事件的,允许显示的使用SHOW MASTER STATUS, SHOW SLAVE STATUS, and SHOW BINARY LOGS语句

Server administration

REPLICATION SLAVE

是否能够创建连接以复制的方式,连接至数据库服务器端

Server administration

SHOW DATABASES

允许使用SHOW DATABASES来查看所有数据库列表,如果没有这个权限则只能查看规定数据库

Server administration

SHUTDOWN

允许使用SHUTDOWN语句,mysqladmin shutdown命令,以及mysql_shutdown()API函数

Server administration

SUPER

超级特权可以用于终止其他会话或改变服务器运行。属于特别高级别的一类权限

Server administration

USAGE

无权限,当您想要创建一个没有权限的用户时,可以指定USAGE

Server administration

ALL PRIVILEGES

所有权限: ALL PRIVILEGES,可以简写为ALL

Server administration

四、MySql设置远程访问权限

1.本地mysql客户端连接mysql

      mysql -u root -p 

2.执行sql语句:

代码语言:javascript复制
--使用mysql系统数据库  
use mysql;   
--配置192.168.1.10可以通过root:123456访问数据库  
GRANT ALL PRIVILEGES ON *.* to 'root'@'192.168.1.10' identified by '123456';
--配置所有ip可以通过root:123456访问数据库  
grant all privileges  on *.* to root@'%' identified by "123456";
--从mysql数据库中的授权表重新载入权限  
flush privileges;  
--查看用户权限是否变更  
select * from user;   

3.远程访问权限已经配置完成。

0 人点赞