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

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

create user 'test_user'@'%' identified by "123";
create user 'test_user'@'localhost' identified by "123";
create user 'test_user'@'127.0.0.1' identified by "123"; grant all privileges on test_db.* to 'test_user'@'%';
grant select,update,delete,insert,drop on test_db.* to 'test_user'@'%';
grant all privileges on test_db.* to 'test_user'@'%' identified by '1112';
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. create user test_user;
2. create user test_user identified by "123"; 3. grant all privileges on test_db.* to 'test_user'@'%' identified by "1234";
4. grant all privileges on test_db.* to 'test_user'@'localhost'identified by "1235";

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

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

取消用户权限

使用 revoke 语句

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

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

删除用户

drop user 'test_user'@'%';
drop user 'test_user'@'localhost';

修改指定用户的密码

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. IT兄弟连 HTML5教程 HTML5的基本语法 简单HTML实例制作

    现在学习HTML5的方式 目前HTML还处于HTML4与HTML5之间的过渡使用阶段.移动端的Web界面开发已经全面使用HTML5的技术,而在PC端由于用户升级浏览器周期较长,面临着页面的兼容性问题, ...

  2. http服务源码分析

    多读go的源码,可以加深对go语言的理解和认知,今天分享一下http相关的源码部分 在不使用第三方库的情况下,我们可以很容易的的用go实现一个http服务, package main import ( ...

  3. Java中的ThreadLocal

    关于 ThreadLocal,我们经常用它来解决多线程并发问题,那它究竟是如何做到的?今天就让我们来好好看一下. 从源码入手 首先,让我们看看 ThreadLocal 类中的介绍: This clas ...

  4. oidc hybrid flow 与另外两种模式的异同

    很多学习identityserver的文章都没有解释清楚oidc hybrid混合模式的含义.本文将解释hybrid模式与另外两种模式的主要区别. 我们先看一下一手文档: https://openid ...

  5. log4net快速上手

    原文地址:https://www.cnblogs.com/lsgsanxiao/p/5845300.html 略有删改 1.配置文件,可以单独创建log4net.config文件,然后手动指定目录,也 ...

  6. make 命令与 Makefile

    make 是一个工具程序,通过读取 Makefile 文件,实现自动化软件构建.虽然现代软件开发中,集成开发环境已经取代了 make,但在 Unix 环境中,make 仍然被广泛用来协助软件开发.ma ...

  7. Requests库主要方法解析以及Requests库入门需要掌握的框架

    Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字 ...

  8. C# copy files from source directory to destination file and rename repeated files and does not override

    static void CopyFiles() { string sourceDir = @"D:\C\ll"; string destDir = @"D:\LL&quo ...

  9. Python 使用 PyMysql、DBUtils 创建连接池,提升性能

    转自:https://blog.csdn.net/weixin_41287692/article/details/83413775 Python 编程中可以使用 PyMysql 进行数据库的连接及诸如 ...

  10. PHP常见循环例题

    以下的每道题都没有固定的写法,可以使看的人更好的理解 1.通过for循环将数组中值求和.求平均值 <?php //1.求数组的和.平均值 $num=[1,20,53,23,14,12,15]; ...