通过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. MySQL(11)---约束

    MySQL(11)---约束 含义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性. 先把Mysql几种约束列出来: 主键约束 外键约束 唯一性约束 非空约束 默认值约束 自增约束 ...

  2. .net core程序强制以管理员权限启动

    当我们编写windows程序的时候,很多时候需要程序默认以管理员权限运行,以前在.net 程序中直接新建一个app.manifest,设置requestedExecutionLevel 节点即可 &l ...

  3. C#上手练习1(if语句、Swich语句)

    1.打印字符串. 2.调用简单方法,方法里有if语句.Swich语句. C# if else 语句是最常用的条件语句,并且 if else 语句的形式有多种,包括单一条件的 if 语句.二选一条件的 ...

  4. python自动登录代码

    公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用.导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁.因此用python实现了一下自动登录,每天定时任务运行一次.ps ...

  5. Linux软件安装——服务管理的命令

    Linux软件安装——服务管理的命令 摘要:本文主要学习了Linux系统中服务管理的命令. service命令 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启 ...

  6. crm-1

    1.crm 客户关系管理系统 :1.业务逻辑部分  2.权限插件 2.forms组件之modelform modelform就是model+form ,form根据model的字段生成标签 ,校验信息 ...

  7. JS基本语法---while循环

    循环:一件事不停的或者是重复的做 循环要有结束的条件,循环还应该有计数器(记录循环的次数的) while循环      while循环语法:   计数器 var 变量=0; while(循环的条件){ ...

  8. querySelectorAll和getElementsByClassName获取元素的区别

    querySelectorAll()方法是HTML5新增的方法,通过传入一个css选择符,返回所有匹配的元素而不仅仅是一个元素.这个方法返回的是一个NodeList的实例.那么它和通过getEleme ...

  9. HTTP协议中的chunked编码解析

    \r\n\r\n"了. chunked编码很简单,是不是? 不过,在协议还原的实现过程中,如何高效高性能地对chunked进行解码,是一件值得挑战的事哦.毕竟,HTTP的流量占比不小的. 长 ...

  10. iOS中进程与线程(多线程、主次线程)

    一.什么是线程?什么是多线程?              线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 例子: 打开一个音乐软件,用户开辟一个线程A ...