Mysql用户管理及权限分配
早上到公司,在服务器上Mysql的数据库里新建了个database,然后本地的系统里用原来连接Mysql账号admin连这个数据库。结果报错了,大概是这样子的:
Access denied for user 'admin'@'%' (using password: YES) 在万能的网上搜了一下,很容易解决了。
其实就是用原来的admin账号的原因,而admin账号没有被分配访问我新建的数据库database的权限。用root用户给admin添加相应的权限,上述问题就解决了。之前对Mysql用户的管理和权限关注的比较少或者基本没有关注,调试时好多时候用root用户连接Mysql了(这样做非常不对,root是你不能登录其他管理账号才使用的)。前段时间看《Mysql必知必会》有专门一章介绍用户管理和权限分配的,安全管理。走马观花,因为实践中没遇到相关问题,所以没怎么上心。今天刚好碰到这问题了。算是基础知识了,给自己扫扫盲。
Mysql服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。
在计算机上装好Mysql后,会自动生成一个数据库mysql。在mysql数据里有一个表user,root用户就在自动生成并存在这个表中。账号root,密码默认为空。我本地装的是WAMP集成包,所以可以用phpmyadmin以网页的形式操作Mysql的用户和权限分配。如果你本地装了各种Mysql的使用工具,使用它们操作也是很是简单的。图形化界面更易于让人接受。这里介绍下如何在Mysql控制台也就是命令行模式下,操作这些事情。 1.创建用户账号
1.1 先看个例子。
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就为Mysql服务器创建了一个名为:test 密码为:1234 的用户。此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
注意:为了安全起见,一般不建议这样做。Mysql用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到Mysql服务器。因此,对于直接处理来说,最好是用标记和函数来处理这些表。
1.2另一种方法
CREATE USER test IDENTIFIED BY '';
这样同样创建了名为:test 密码为:1234 的用户。在创建用户账号时不一定需要密码,不过这个例子用IDENTIFIED BY '1234'给出了一个密码。IDENTIFIED BY指定的密码为纯文本,Mysql将在保存到user表之前对其进行加密。
这里创建的用户test默认是远程登录的,即插入到user表的记录Host字段为"%"。创建用户时如果想直接创建为本地访问Mysql的用户,只需在用户名标注localhost。如下:
CREATE USER test@localhost IDENTIFIED BY '1234';
并且基于1.1中‘注意’处所提到原因,推荐使用这种方法创建新的用户账号。 2.删除用户账号
为了删除一个用户账号(以及相关的权限),使用DROP USER语句,如下所示:
DROP USER test;
要说明一下的是DROP USER默认是删除的也是要远程登录的"%"用户。如果user表中存在名为test的用户,但Host不为"%"的会报错。如何删除本地访问的用户呢,同样的:
DROP USER test@localhost;
自Mysql5以来,DROP USER删除用户账号和所有的账号权限。在Mysql5之前,DROP USER只能单纯删除用户账号,不能删除相关权限。所以,使用Mysql5之前版本的,需要先REVOKE删除与账号相关的权限,然后再用DROP USER删除账号。 3.更改密码
为了更改用户的密码,可使用SET PASSWORD语句,新密码必须如此加密:
SET PASSWORD FOR test = Password('new1234');
当然可以直接操作mysql数据库里的user表来达成目的,但这是不可取的。 4.设置访问权限
4.1查看账号当前所有具有的权限。
SHOW GRANTS FOR test;
像你想象的那样,用户test同样为远程访问Mysql的用户,即Host为'%'的。 SHOW GRANTS FOR test@localhost,可查看本地访问的用户test。 4.2授予用户权限
先看一个例子。
GRANT ALL ON picture.* TO test IDENTIFIED BY "1234";
上面的操作允许test用户(默认为'%'类型用户)在picture.*(picture数据的所有表)使用所有权限,包括的权限下面再介绍。当然如果test用是不存的,该操作会先创建一个test('%')用户,然后将权限分配给它。 GRANT语句的语法:
GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION; 这里要说下,GRANT的反操作为REVOKE,用它撤销用户的一个权限。 GRANT和REVOKE可在几个层次上控制访问权限。
- 整个服务器,使用GRANT ALL 和 REVOKE ALL;
- 整个数据库,使用ON database.*;
- 特定的表,使用ON database.table;
- 特定的列;
- 特定的存储过程.
要使用该语句,你需要填写下列部分:
privileges 授予用户的权限。下表列出可用于GRANT语句的权限指定符:
权限指定符 权限允许的操作
Alter 修改表和索引
Create 创建数据库和表
Delete 删除表中已有的记录
Drop 抛弃(删除)数据库和表
INDEX 创建或抛弃索引
Insert 向表中插入新行
REFERENCE 未用
Select 检索表中的记录
Update 修改现存表记录
FILE 读或写服务器上的文件
PROCESS 查看服务器中执行的线程信息或杀死线程
RELOAD 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN 关闭服务器
ALL 所有;ALL PRIVILEGES同义词
USAGE 特殊的“无权限”权限
columns 权限运用的列,它是可选的,并且你只能设置列特定的权限。如果命令有多于一个列,应该用逗号分开它们。
GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION;
Mysql用户管理及权限分配的更多相关文章
- MySQL 用户管理与权限管理
MySQL 用户管理与权限管理 -- 操作环境mysql> show variables like 'version'; +---------------+--------+| Variabl ...
- MySQL用户管理及权限设置
mysql 用户管理和权限设置 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql ...
- centos7下mysql 用户管理和权限设置
1.进入mysql命令行,输入root及密码[root@localhost ~]# mysql -u root -pEnter password: Welcome to the MySQL monit ...
- 学习计划 mysql 用户管理与权限
最近在学习数据库的 主从复制 里面涉及到了关于用户及其管理权限的赋予,之前一直没有认真的学习这个. 现在想具体的学习一下. -- 为什么 数据库 要实现多用户管理? 举个最简单的例子,你需要和第三方做 ...
- MySQL 用户管理及权限管理
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...
- MySQL用户管理及权限管理
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...
- mysql 用户管理和权限设置
用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...
- MySQL用户管理和权限设置
用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...
- Oracle 用户管理与权限分配
用户管理是系统管理员最基本的任务之一,用户想要连接数据库并且使用相应的系统资源就必须是系统的合法用户且具有对应的权限. 1 创建用户 default tablespace default_tables ...
随机推荐
- dede tag标签静态化
看回那2个文件夹即可,txt说明书我已经修改过. 下面说一下tag标签静态化之后在内容页.列表页中如何使用. 内容页中沿用之前的方法即可: {dede:tag sort='new' getall='0 ...
- Kafka 学习笔记之 架构
Kafka的概念: 1. AMQP协议 Advanced Message Queuing Protocol (高级消息队列协议) The Advanced Message Queuing Protoc ...
- Java 2019 生态圈使用报告,这结果你赞同吗?
这是国外一机构调查了 7000 名开发者得出来的 Java 2019 年生态圈工具使用报告,主要调查了 Java 版本.开发框架.web 服务器等使用情况.虽然只有 7000 名开发者参与调查,这数目 ...
- CSS实现带箭头的提示框
我们在很多UI框架中看到带箭头的提示框,感觉挺漂亮,但是之前一直不知道其原理,今天网上找了些资料算是弄清楚原理了: 先上效果图: 原理分析: 上面的箭头有没有觉得很像一个三角形,是的,它就是三角形:只 ...
- PCA 算法核心:高维度向量向低维度投影
Principal Component Analysis:主成分分析 步骤 5 步: 1.去平均值,也就是将向量中每一项都减去各自向量的平均值 2.计算矩阵的方差,协方差,特征值, 3,.把特征值从大 ...
- python编程基础之十五
二维列表 l1 = [[1, 2, 3], [4, 5, 6]] print(l1[0][0]) 列表负值 列表复制为两种:深复制,浅复制 浅复制:只复制容器,容器里的元素不产生副本,只是技术引用增加 ...
- BS结构的一个注册用户的功能
注册用户功能 学了Java一段时间,就想折腾折腾,就做了一个注册的功能,用HTML写了一个网页上的比较简陋的界面,用Java做了一个后台简陋的服务器处理数据,最后将数据存储到数据库中. 注册界面 ...
- SQL SERVER数据库基本语法汇总,仅代表个人整理,仅供参考
以下SQL基本语法皆由本人整理,以下做一个汇总,关于游标,可作为了解,不要求掌握,其他查询.修改.删除操作等基本语法必须会使用.select * from [dbo].[TBICJE]select m ...
- 全球首个开放应用模型 OAM 开源 | 云原生生态周报 Vol. 23
作者 | 临石.元毅.冬岛.衷源.天元 业界要闻 全球首个开放应用模型 OAM 开源 2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon ...
- Ubuntu cd后自动执行ls或ll
编辑 .bashrc 文件 sudo gedit ~/.bashrc 在最后一行加入 cdAndList() { cd "${1}"; ls; } alias cd=cdAndLi ...