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

一、用户管理

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
REFERENCESMySQL 5.7.6之前引用特权是未使用的。5.7.6,创建一个外键约束需要引用父表的特权。Databases or tables
EVENTThe 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 ROUTINEALTER ROUTINE允许你修改存储过程(过程或函数)前提是你需要在存储过程上拥有ALTER或DROP权限Stored routines
CREATE ROUTINEALTER 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无权限,当您想要创建一个没有权限的用户时,可以指定USAGEServer administration
ALL PRIVILEGES所有权限: ALL PRIVILEGES,可以简写为ALLServer administration

四、MySql设置远程访问权限

1.本地mysql客户端连接mysql

      mysql -u root -p 

2.执行sql语句:

--使用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.远程访问权限已经配置完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值