前提:

  1. 本文需要Mysql的root用户操作,如果忘记密码,可以参考:本博主的mysql密码修改博客。

1.查看当前的用户

// 进入mysql服务会有一个mysql的库,查询该库下的user表,查询字段 Host,User .
select Host,User from mysql.user;

查询结果:

mysql> select user,host from mysql.user;
 +---------------+-----------+
 | user          | host      |
 +---------------+-----------+
 | mysqld        | %         |
 | root          | %         |
 | mysql.session | localhost |
 | mysql.sys     | localhost |
 | root          | localhost |
 +---------------+-----------+
 5 rows in set (0.00 sec)

2. 创建一个用户 user_name

\\ 此处user_name为自定义用户名,by 后面的字符串为自定义密码,可以修改 。
create user user_name identified by '1234';

创建结果:

mysql> create user user_name identified by '1234';
 Query OK, 0 rows affected (0.00 sec)

上述结果表示:sql语句运行ok,这里0行生效,不用管 。

再次查询用户表(验证结果):

mysql> select Host,User from mysql.user;
+-----------+---------------+
 | Host      | User          |
 +-----------+---------------+
 | %         | user_name    |
 | %         | mysqld        |
 | %         | root          |
 | localhost | mysql.session |
 | localhost | mysql.sys     |
 | localhost | root          |
 +-----------+---------------+
 6 rows in set (0.00 sec)

上述操作成功:

  1. mysql程序里面操作库,表还是报没有权限错误 。
  2. 原因是我们创建了用户,还没有对这个用户分配权限。
  3. 下面我们就为这个用户,配置权限 。

3. 配置权限

// grant 权限设置关键字,privileges on *.* to 允许MySQL用户访问所有数据库 。
grant all privileges on *.* to 'user_name'@'% 'identified by '1234' with grant option;

上述命令解释:

  1.  all: 代表接受所有操作,比如 select,insert,delete....  。
  2.  *.*: 代表所有库下面的所有表,第一个*可以是数据库名表示指定数据库,第二个*可以是该库下的表名表示指定数据表 。
  3. %:  代表这个用户允许从任何地方登录;为了安全期间,这个%可以替换为你允许的ip地址 。
  4. with grant option:是否允许用户继续授权(注意,这个用户能够授权只能是该用户的权限子集 。
  5. 注意,在授权操作之后,使用flush privileges命令刷新权限 。

4. 收回Mysql 用户的权限

    查看当前用户的权限:

show grants;

    查看特定用户的权限:

show grants for user_name@%;

    使用REVOKE命令回收对用户的授权语法:

    REVOKE 权限 ON 数据库对象 FROM 用户;

    例如: 回收用户user_name 的所有权限 :

REVOKE  all  ON  *.*  FROM  user_name@'%';

注意:使用REVOKE撤销全部权限,操作者必须拥有MySQLl数据库的全局CREATE USER权限或UPDATE权限;

5. 刷新mysql用户权限相关表

flush privileges ;

6. 远程连接问题

Mysql 程序远程连接还是连不上,报access deny 错,解决方式;

打开 mysql配置文件,是默认的3306,接着往下面看,发现一个关键地方;

bind-address  = 127.0.0.1

原来这里mysql默认绑定了本地ip,不接受其他来源;注释掉,重启mysql 一切OK;

7.  修改用户密码

update mysql.user set password=password('新密码') where User="user_name" and Host="%";

8. 删除用户

delete from mysql.user where User='linjianqing' and Host='%';

9.  Mysql 补充操作

如果创建用户时,报:

ERROR 1396 (HY000): Operation CREATE USER failed for 'linjianqing'@'%'

则把语句改成

create  user  'user_name'@'%'  identified by  '123456' ;

创建数据库命令:create database mmall default character set utf8 COLLATE utf8_general_ci;

显示数据库:show databases;

删除数据库:drop database mmall;

给这个数据库赋予用户的权限:grant all privileges on mmall.* to 'jacob'@'%' identified by '123456';

10. 将sql文件导入数据库

进入数据库命令:use 数据库名;

显示表:show tables;

导入:source /developer/mmall.sql;

验证,查看表:select * from mmall_product \G;

\G是格式化的意思