通过create user 命令来创建用户, 有两种方式:(只介绍通过 create user 命令, 直接往user表中插入数据的方式,这里就不说了)

创建用户的同时, 指定用户可登录的主机和密码

  1. create user 'test_user'@'%' identified by "123";
  2. create user 'test_user'@'localhost' identified by "123";
  3. create user 'test_user'@'127.0.0.1' identified by "123";
  4. grant all privileges on test_db.* to 'test_user'@'%';
  5. grant select,update,delete,insert,drop on test_db.* to 'test_user'@'%';
  6. grant all privileges on test_db.* to 'test_user'@'%' identified by '1112';
  7. grant all privileges on test_db.* to 'test_user'@'%' with grant option;

首先解释一下创建用户的命令参数:

  • 'test_user'是用户名
  • @ 后面是指定的登录主机,'localhost' '127.0.0.1'表示只能在 本地登录;'%'表示只能在远程主机登录
  • identified by 后面是密码
  • 友情提示: 上述命令中,用户名, 登录主机, 密码, 建议都使用 引号包起来, 防止不必要的麻烦

分配权限的命令参数:

  • grant 是分配权限的命令
  • all privileges 指所有的权限, 也可以像第二条那样, 指定某些权限给用户
  • test_db.* 表示 test_db库的所有表, 可以指定某个表 test_db.table1, 或者所有数据库的所有表, *.*
  • identified by 指定密码, 如果不指定, 默认用创建用户的时候的密码, 或者可以不同的权限,给不同的密码, 或者不同的登录主机给不同的密码, 都是可以的
  • with grant option 如果带着这个参数, 表示这个被分配权限的用户, 还可以把自己的权限分配给其他人
  • 用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。

上面前三条命令只能同时使用一条, 因为create user 不能创建同名的用户

那么问题就来了, 假设通过第一条命令创建了用户, 那么这个用户就只能在远程主机上登录, 而不能在本地登录, 如果在本地登录, 会报这个错误:ERROR 1045 (28000): Access denied for user 'card_test1'@'localhost' (using password: YES)

出现这个错误有很多种情况, 据我的了解, 可能是:

  1. 用户没有在本地登录的权限, 也就是'card_test1'@'localhost' 这个用户不存在, 因为只存在'card_test1'@'%' 这个用户
  2. 密码不对

为了解决这个问题, 可以通过第二种方式, 也就是create user 的时候, 不分配登录主机这些参数

只创建用户, 不分配主机

  1. 1. create user test_user;
  2. 2. create user test_user identified by "123";
  3. 3. grant all privileges on test_db.* to 'test_user'@'%' identified by "1234";
  4. 4. grant all privileges on test_db.* to 'test_user'@'localhost'identified by "1235";

上面的命令, 1,2 执行一条, 单纯的创建用户, 或者同时分配密码;

然后, 3,4 两条都可以执行, 这样就能让test_user 这个用户, 既能在本地登录, 又能在远程登录, 如果 grant的时候, 设置不同的密码, 还能使在不同主机登录的同一个用户, 使用不同的密码

取消用户权限

使用 revoke 语句

  1. revoke all on test_db.* from 'test_user'@'localhost';

这个命令就取消了 test_user 这个用户, 在本地登录时的全部权限

删除用户

  1. drop user 'test_user'@'%';
  2. drop user 'test_user'@'localhost';

修改指定用户的密码

  1. update mysql.user set password=password('new_passwd') where User='test_user' and Host='%';

创建用户给用户创建权限或者修改权限, 都可以通过直接操作 mysql.user表; 注意直接操作表的话, 需要用flush privileges;命令 刷新权限

mysql 创建用户, 分配权限, 删除用户的更多相关文章

  1. mysql 创建,授权,删除 用户

    1.创建用户 创建一个用户名是 lefunyun 密码是 X5A4FU8I0lKM21YPYUzP 账号 CREATE USER lefuyun@localhost IDENTIFIED BY 'X5 ...

  2. Mysql创建数据库以及用户分配权限

    一.创建mysql数据库 1.创建数据库语法 --创建名称为“testdb”数据库,并设定编码集为utf8 CREATE DATABASE IF NOT EXISTS testdb DEFAULT C ...

  3. MySQL添加新用户、为用户创建数据库、为新用户分配权限

    登录MySQL [root@VM_0_2_33_centos /]#mysql -u root -p 添加新用户 允许本地 IP 访问 localhost, 127.0.0.1 mysql>'; ...

  4. MySQL添加用户、为用户分配权限

    登录MySQL登录本地用户 mysql -u root -p登录外网用户(需要注意服务器可能只允许本地登录,需要修改响应的配置文件) mysql -u zhrt -h 10.64.6.4 -p添加用户 ...

  5. Linux下给mysql创建用户分配权限

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  6. MySQL中创建用户分配权限

    测试环境:CentOS6.8 和 MySQL5.5.4 一 需求 在项目开发的过程中可能需要开放自己的数据库给别人,但是出于安全的考虑,不能同时开放自己服务器里的其他数据库.那么可以新建一个用户,赋予 ...

  7. 如何给mysql用户分配权限

    1,Mysql下创建新的用户 语法: 1.create user 用户名 identified by '密码'; 例:create user xiaogang identified by '12345 ...

  8. 如何给mysql用户分配权限+增、删、改、查mysql用户

    在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...

  9. SQLSever--基础学习--创建登录用户&创建数据库用户&分配权限

    如题,本文简记一下SQL Sever里面登录用户(login)的创建,数据库用户(DBUser)的创建,以及给数据库用户分配权限(Grant). 数据库有三层保护机制: 第一层:登录用户以及登录密码的 ...

随机推荐

  1. C# Event在.Net规则下由接口定义的实现

    最近在学C#(教材<C# in a nutshell>很不错的说),看完delegate(委托)以后,紧接着就是event(事件)了,个人对跟.Net相关的东西并没有什么兴趣(毕竟是会增加 ...

  2. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 9

    18.7  PDO的事务处理 事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作.如果组中的所有SQL语句都操作成功,则认为事务成功,那么事务被提交,其修改将作用于所 ...

  3. Octave Convolution详解

    前言 Octave Convolution来自于这篇论文<Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural ...

  4. 最全各种系统版本的XPosed框架资料下载整理

    由于XPosed在不同安卓系统版本中对应的版本不同,给很多新手造成极大困扰,本文作者经过几番努力,给大家整理了各个版本对应的xposed框架版本以及相关资料,并附上相关下载链接,希望对大伙有所帮助. ...

  5. Maven设置本地仓和阿里云远程仓

    在maven项目导入jar包坐标时需要连接maven官方仓库下载,但是下载速度感人,所以来修改一下设置. 设置成为本地仓和连接阿里云的远程仓库. (本地仓如果没有这个jar) 找出相应配置文件:例如我 ...

  6. E203 CSR rtl实现分析

    CSR状态控制寄存器,每个hart都有自己的CSR.对于每个hart,可以配置的状态寄存器是4k.CSR寄存器的功能见:https://www.cnblogs.com/mikewolf2002/p/1 ...

  7. Python单元测试工具doctest和unittest

    Python标准库包含两个测试工具. doctest:一个简单的模块,为检查文档而设计,但也适合用来编写单元测试. unittest:一个通用的测试框架. 一.使用doctest进行单元测试 创建文件 ...

  8. dijit/_WidgetBase

    英文地址:http://dojotoolkit.org/reference-guide/1.10/dijit/_WidgetBase.html 介绍 dijit/_WidgetBase是Dijit包中 ...

  9. day35作业

    1. 查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重) -- 2.查询每个老师教授的课程数量 和 老师信息 -- 3. 查询学生的信息以及学生所在的班级信息 -- 4.学生中男生的个 ...

  10. 海思Hi3519A MPP从入门到精通(一 系统概述)

    1. 概述 海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速 开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 M ...