Mysql数据库用户及用户权限管理,Navicat设置用户权限



相关内容原文地址: CSDN:dayi_123:[mysql数据库用户及用户权限管理](https://blog.csdn.net/dayi_123/article/details/82989264)

一、Mysql数据库的权限

1.1 mysql数据库用户权限级别

  1. 全局性管理权限:作用于整个mysql实例级别
  2. 数据库级别:作用于指定的某个数据库上或者所有数据库上
  3. 数据库对象级别权限:作用于指定的数据库对象上(表或者视图)

1.2 mysql数据库用户权限

权限名称权限说明
All/All Privileges全局或者全数据库对象级别的所有权限
Alter修改表结构的权限,但必须要求有create和insert权限配合
Alter routine修改或者删除存储过程、函数的权限
Create创建新的数据库和表的权限
Create routine允许创建存储过程、函数的权限
Create tablespace允许创建、修改、删除表空间和日志组的权限
Create temporary tables创建临时表权限
Create user创建、修改、删除、重命名user
Create view创建视图
Delete删除行数据
drop删除数据库、表、视图的权限,包括truncate table命令
Event查询,创建,修改,删除MySQL事件
Execute执行存储过程和函数
File在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select ,into outfile,load file()函数等
Grant option授权或者收回给其他用户你给予的权限
Index创建和删除索引
Insert在表里插入数据
Lock对拥有select权限的表进行锁定,以防止其他链接对此表的读或写
Process允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令
Reference允许创建外键
Reload执行flush命令,指明重新加载权限表到系统内存中
Replication client执行show master status,show slave status,show binary logs命令
Replication slave允许slave主机通过此用户连接master以便建立主从复制关系
Select从表中查看数据
Show databases通过执行show databases命令查看所有的数据库名
Show view通过执行show create view命令查看视图创建的语句
Shutdown关闭数据库实例,执行语句包括mysqladmin shutdown
Super允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令
Trigger允许创建,删除,执行,显示触发器的权限
Update修改表中数据的权限
Usage创建一个用户之后的默认权限,本身代表无权限

1.3 存放用户权限表的说明

Mysql数据库用户权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中, MySQL实例启动后就加载到内存中。

存放权限的表表的作用
user存放用户账户信息以及全局级别(所有数据库)权限,(存放了那些用户可以访问那些数据库的权限)
db数据库级别权限,决定了来自哪些主机的哪些用户可以访问此数据库
tables_priv存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的那张表
columns_priv存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的字段
procs_priv存放存储过程和函数级别的权限

Mysql数据库权限管理中,字段user,password,authencation_string,db,table_name大小写敏感,而字段host,column_name,routine_name对大小写不敏感。

二、用户权限管理

2.1 创建用户及授权

Mysql用户创建可以通过create user/grant命令创建,也可以通过insert语句直接操作MySQL系统权限表来创建。

创建及给用户授权命令

创建用户:

CREATE USER username@'host' IDENTIFIED BY 'password'

用户授权:

GRANT permission ON database.tables TO username@’host’

创建用户并授权:

GRANT permission ON database.tables TO username@'hostt'  WITH GRANT OPTION;

MYSQL创建用户及给用户授权的用户名主机部分由两部分组成,分别为用户名和登录主机名,格式为’username’@’hostname’;hostname字段可以使用主机名或者ip地址,同时hostname字段允许使用”%”和”_”两种字符进行匹配。

# 创建用户dayi123并授予本地登录所有库所有权限
mysql> create user 'dayi123'@'localhost' identified by 'dayi123';
mysql> grant all privileges on *.* to 'dayi123'@'localhost' with grant option;
# 创建用户用户dayi通过192.168.0.0段ip地址登录的增删该查跟新库web的权限
mysql> grant select,insert,update,delete,create,drop on web.* to 'dayi'@'192.168.%.%' identified by 'dayi123';
# 给root用户授权可以通过192.168.0.0段地址登录
mysql> grant all on *.* to root@'192.168.%.%' identified by 'dayi123';

2.2 用户权限查看

查看已经授权给用户权限信息命令:show grants for ‘username’@’host’

# 查看授权给'dayi'@'192.168.%.%'的权限信息
mysql> show grants for 'dayi'@'192.168.%.%';
+---------------------------------------+
| Grants for dayi@192.168.%.%              |                                         
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'dayi'@'192.168.%.%'   |                                         
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `web`.* TO 'dayi'@'192.168.%.%' |
+---------------------------------------------------+
2 rows in set (0.00 sec)

查看创建用户的语句:show create user ‘username’@’host’

# 查看给用户’dayi’没有授权的信息
mysql> show create user dayi@'192.168.%.%';
+------------------------------------------+
| CREATE USER for dayi@192.168.%.%            |                                                                                                                       
+--------------------------------------------+
| CREATE USER 'dayi'@'192.168.%.%' IDENTIFIED WITH 'mysql_native_password' AS '*8FD40AC91E6D5D89D1060096FDEF8A4ECAA05B5C' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
+-----------------------------------------------+
1 row in set (0.00 sec)

2.3 收回用户权限

收回用户权限是可以通过语句revoke完成,命令格式为:

Revoke permission ondatabase,tablesfrom ‘username’@’host’
# 收回用户权限是可以通过语句revoke完成,命令格式为:
Revoke permission ondatabase,tablesfrom ‘username’@’host’

2.4 设置用户密码

Mysql数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。

修改其他用户密码(当前用户要有权限),一般在root用户下操作

登录mysql后的修改命令:

Alter user ‘username’@’host’ identified by ‘newpassword’
Set password for ‘username’@’host’=password(‘newpassword’)
Grant user on permission touser’@’host’ identified by ‘newpassword’

在系统命令行下修改:

mysqladmin –u uername –h host password “newpassword”
# 修改dayi123的密码为dayi1234
mysql> alter user 'dayi123'@'localhost' identified by 'dayi1234';
Query OK, 0 rows affected (0.35 sec)
# 修改dayi远程登录密码为dayi1234
mysql> set password for 'dayi'@'192.168.%.%'=password('dayi1234');
Query OK, 0 rows affected, 1 warning (0.00 sec)

修改当前用户密码

alter user user() identified by ‘newpassword’
set password=password(‘newpassword’)
# 修改当前登录的root的密码为dayi1234
mysql> alter user user() identified by 'dayi1234';
Query OK, 0 rows affected (0.00 sec)

2.5 删除用户

删除命令:drop user ‘username’@’host’

# 删除用户dayi远程登录
mysql> drop user 'dayi'@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)
# 查看删除后的用户
mysql> select user,host from mysql.user;
+---------------+-------------+
| user          | host        |
+---------------+-------------+
| root          | 192.168.%.% |
| dayi          | localhost   |
| dayi123       | localhost   |
| mysql.session | localhost   |
| mysql.sys     | localhost   |
| root          | localhost   |
+---------------+-------------+

2.6 用户的锁定与解锁

在创建用户时或用户创建后可以将用户锁定,用户被锁定后,此用户无法完成登录,锁定与解锁的命令如下:

在创建用户时锁定用户:

     Create user ‘username’@’host’ identified by ‘password’ account lock;

用户创建受锁定用户L

     Alter user ‘username’@’host’ account lock

解锁用户:alter user ‘username’@’host’ account unlock;

# 锁定用户dayi123
mysql> alter user 'dayi123'@'localhost' account lock;
Query OK, 0 rows affected (0.00 sec)
# 用户被锁定后等录时报如下错:
~]# mysql -udayi123 -p
Enter password: 
ERROR 3118 (HY000): Access denied for user 'dayi123'@'localhost'. Account is locked.
# 解锁用户dayi123
mysql> alter user 'dayi123'@'localhost' account unlock;
Query OK, 0 rows affected (0.00 sec)

2.7 设置密码过期策略

Mysql数据库用户同系统用户一样,可以设置密码过期策略,密码的过期天数可以在配置文件里面设置,也可以通过命令设置,通过命令为每个用户设置密码的过期天数则会覆盖系统配置文件中的设置。

  1. 配置文件中设置
    选项:default_password_lifetime=”过期天数” :如果设置为0,则密码永不过期。
  2. 通过命令设置
alter user ‘username’@’localhost’ password expire interval number day; 设置过期天数
 alter user ‘username’@’localhost’ password expire never; 设置密码不过期
alter user ‘username’@’localhost’ password expire default; 默认过期策略
alter user ‘username’@’localhost’ password expire; 手动强制密码过期
#设置用户dayi123的密码180天后过期
mysql> alter user 'dayi123'@'localhost' password expire interval 180 day;
Query OK, 0 rows affected (0.00 sec)
# 设置用户dayi的密码立即过期
mysql> alter user 'dayi'@'localhost' password expire;
Query OK, 0 rows affected (0.00 sec)
# 设置密码过期后执行命令时需要修改密码才能执行命令
]# mysql -udayi –p
……
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

2.8 mysql数据库用户资源限制

通过修改mysql数据库资源限制可以限制用户在某个时间段内连接mysql数据库的时间、执行语句的次数等。

  1. 设置参数:
max_user_connections:全局选项,限制所有用户在同一时间连接mysql数据库实例的数量
MAX_QUERIES_PER_HOUR:一个用户在一个小时内可以执行查询的次数(基本包含所有语句)
MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次数(仅包含修改数据库或表的语句)
MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接MySQL的时间
MAX_USER_CONNECTIONS:一个用户可以在同一时间连接MySQL实例的数量
  1. 设置mysql数据库用户资源限制
    设置mysql数据库用户资源限制时可以在创建用户时设置,也可以在用户创建完成后通过命令设置。
# 创建用户day,并对用户day的资源进行控制
mysql> create user 'day'@'localhost' identified by 'dayi123' with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;  
Query OK, 0 rows affected (0.00 sec)
# 对用户dayi进行资源控制
mysql> alter user 'dayi'@'localhost'  with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;
Query OK, 0 rows affected (0.00 sec)

当需要取消某个选项的,只需将某个选项的值设置为0即可。

三、Navicat设置mysql用户数据库权限

在这里插入图片描述
点击上图的新建用户,可以看到相关权限的配置。
在这里插入图片描述

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,Navicat是一款流行的数据库管理工具,支持多种数据库管理系统,包括MySQL。如果您正在使用Navicat管理MySQL数据库,您可以使用它的图形用户界面(GUI)进行管理和操作。 使用Navicat连接MySQL数据库: 1. 打开Navicat软件。 2. 点击“连接”按钮,选择MySQL作为数据库类型。 3. 输入MySQL数据库的主机名、端口、用户名和密码等连接信息。 4. 点击“连接”按钮,连接到MySQL数据库。 在Navicat中管理MySQL数据库: 1. 在连接MySQL数据库后,您可以在Navicat中查看所有的数据库和表。 2. 您可以使用Navicat的图形用户界面进行数据库和表的创建、修改和删除操作。 3. 您可以执行SQL查询和命令,并查看查询结果。 4. 您可以备份和恢复MySQL数据库,以及进行其他管理操作,如用户管理和权限管理等。 总之,Navicat是一个非常方便的MySQL数据库管理工具,可以大大简化数据库管理操作,并提高效率。 ### 回答2: 使用Navicat可以方便地管理MySQL数据库Navicat是一款强大的数据库管理工具,用于连接、查询和管理多种类型的数据库,包括MySQLNavicat提供了直观的用户界面,使得管理和操作MySQL数据库变得简单和高效。它支持多种功能,如创建数据库、表和视图,执行SQL查询和脚本,导入和导出数据等。通过Navicat,我们可以轻松地进行数据的增删改查操作。 使用Navicat管理MySQL数据库有以下几个优点: 1. 用户友好:Navicat提供了直观的用户界面,使得即使对于没有数据库管理经验的用户也能快速上手。它的操作方式类似于传统的桌面应用程序,而不是命令行。 2. 多种功能:Navicat提供了一系列功能,使得数据库管理变得更加方便。我们可以通过Navicat来创建数据库、表和视图,执行复杂的SQL查询和脚本,并进行数据的导入和导出操作。 3. 快速连接:Navicat支持通过多种方式连接MySQL数据库,包括本地连接和远程连接。我们可以轻松地连接到我们的MySQL服务器,并管理我们的数据库。 4. 数据导入导出:Navicat可以帮助我们将数据从其他数据库或文件导入到MySQL数据库中,也可以将MySQL数据库中的数据导出为各种格式的文件。这方便了数据的迁移和共享。 总之,使用Navicat管理MySQL数据库可以使数据库管理变得更加简单和高效。它提供了丰富的功能和用户友好的界面,使我们能够轻松地进行数据库的管理和操作。 ### 回答3: 使用Navicat来管理MySQL数据库具有诸多优势。Navicat是一款功能强大且易于使用的数据库管理工具,它能够帮助我们更高效地管理和维护MySQL数据库。 首先,Navicat提供了一个直观且用户友好的界面,使得数据库的操作变得简单和容易上手。我们可以通过简单的拖放、复制和粘贴操作来创建、编辑和删除数据库、表和字段,无需编写复杂的SQL语句。这大大减少了操作和学习的难度,提高了工作效率。 其次,Navicat支持多种数据导入和导出格式,包括SQL脚本、Excel、CSV等。这使得我们可以将不同格式的数据轻松地导入到数据库中,或者将数据库中的数据导出到其他格式。同时,Navicat还提供了强大的数据同步功能,可以将数据从一个数据库同步到另一个数据库,保持数据的一致性。 第三,Navicat具备强大的查询和筛选功能,可以帮助我们快速构建复杂的查询语句并查找所需的数据。它还支持SQL自动完成、语法高亮和代码片段等功能,大大提高了开发人员的编码效率。 第四,Navicat提供了丰富的数据库管理工具,如备份和恢复数据库、优化数据库性能、监测数据库状态等。它还具备定时任务和数据同步功能,可以自动执行一些常规的数据库管理工作,减轻了管理员的工作负担。 综上所述,使用Navicat管理MySQL数据库有助于提高工作效率、简化操作、保证数据的完整性和一致性,是一款非常实用的数据库管理工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值