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 ...
随机推荐
- 如何安装PHPstorm并配置php运行环境运行php项
php是程序开发者常用的编程语言,那么它就需要一款简单实用的集成开发环境,也就是一款舒服的编辑器,今天笔者为大家介绍phpstorm这款软件,并详细的讲解如何用它配置php项目 工具/原料 笔 ...
- git 工作流中的 Sourcetree 和命令行操作对比
git 工作流操作 1.初始化本地仓库文件夹 终端进入项目文件夹 git init 隐藏文件夹中有 .git 文件夹则初始化成功 2.git 查看仓库状态 这里以新建一个 demo.txt 为例 ① ...
- centos7 scrapy安装
1.anaconda3安装 wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh 安装报错,可能是源的问题 ...
- Spring Cloud Config Server 节点迁移引起的问题,请格外注意这一点!
前言: 虽然强烈推荐选择使用国内开源的配置中心,如携程开源的 Apollo 配置中心.阿里开源的 Nacos 注册&配置中心. 但实际架构选型时,根据实际项目规模.业务复杂性等因素,有的项目还 ...
- JDK-基于Windows环境搭建
JDK安装: 毋庸置疑你要跑java程序,肯定少不了JDK,如jemter还有还有~ 下载jdk地址1:https://pan.baidu.com/s/1FIvGNvZSy0EpCBxHCz07nA ...
- Redis 介绍学习
1.Redis 简介 Redis 是一个支持数据结构更多的键值对数据库.它的值不仅可以是字符串等基本数据 类型,也可以是类对象,更可以是 Set.List.计数器等高级的数据结构. Memcached ...
- Python flask 构建可扩展的restful apl☝☝☝
Python flask 构建可扩展的restful apl☝☝☝ Flask-RESTful是flask的扩展,增加了对快速构建REST API的支持.Flask-RESTful通过最少的设置鼓励最 ...
- 简单了解工作空间工厂(IWorkspaceFactory)
工作空间工厂(WorkspaceFactory)是工作空间的发布者,允许客户连接通过一组连接属性定义的工作空间. 工作空间表达了一个包含一个或多个数据集的数据库或数据源,数据集可以是表.特征类.关系类 ...
- Lombok中关于@Data的使用
当你在使用 Lombok 的 @Data 注解时,其实会有一些坑需要关注,今天就让我们来见识一下. Lombok 先来简单介绍一下 Lombok ,其官方介绍如下: Project Lombok ma ...
- jquery 获取input的值
$("input").attr("value") -- 获取的是input的默认值 $("input").val() ...