创建用户
CREATE USER 'userName'@'IP' IDENTIFIED BY 'password';
说明:
userName:新建用户的用户名;
IP:指定此用户可以在哪些ip登录本数据库,如果设置为所有地方都可以登陆则将IP替换为‘%’,
password:此新建用户的登录密码;
为root用户添加远程grant权限
查询root用户的权限
SELECT * FROM mysql.`user`
如果下图中“关键信息”为N,则需要执行下面“为root用户赋予远程grant权限”的sql
为root用户赋予远程grant权限
UPDATE mysql.user SET Grant_priv = 'Y' WHERE HOST='%' AND USER = 'root'
FLUSH PRIVILEGES;
给root用户添加给指定用户操作指定表的权限
查询root用户对指定表的grant权限
select * from mysql.tables_priv
看下图中table_priv列,是user、ip、table的权限数据,如果远程操作时host为%的root对某表的权限中包含grant,可以略过下一步“给root用户赋予grant指定表的权限”,否则需要执行下一步才能给指定用户赋予指定表的相关权限
给root用户赋予grant指定表的权限
insert into mysql.tables_priv VALUES
('%','数据库名','root','表名','root@%',SYSDATE(),'Select,Insert,Update,Delete,Grant','');
FLUSH PRIVILEGES;
说明:
上面代码中root指的是当前用户,当然当前用户必须是已经被赋予grant权限的用户才行;
root@%是指当前用户在那个ip做的此操作,%就是当前ip;
Select,Insert,Update,Delete,Grant:是被授予的权限,包括但不限于这几类,但是Grant必须有;
给指定用户赋予操作指定表的权限
GRANT SELECT,INSERT,UPDATE,DELETE ON 数据库名.表名 TO '用户名'@'ip';
说明:
上面代码中“SELECT,INSERT,UPDATE,DELETE”只是所有权限中的几种,所有权限请看下图;
用户名’@'ip则是指被授权的用户的用户名以及被授权的ip,即该用户可以在那个ip下拥有上面被赋予的权限;
如上图所示,一个表的权限有这么多种,通过navicat右键指定的表,然后选择设置权限即可看到上图;当然此时就可以通过点击“添加权限”按钮 为指定用户赋予指定的权限
创建用户只能访问指定库
CREATE DATABASE zhidingku;
CREATE USER 'testuser'@'%' IDENTIFIED BY 'asd123';
GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, TRIGGER, CREATE VIEW, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `zhidingku`.* TO 'testuser'@'%';
GRANT GRANT OPTION ON `zhidingku`.* TO 'testuser'@'%';
上面创建了用户testuser,密码是asd123,用户接入数据库之后,只能对zhidingku这个库具有全部的访问权限,不能访问其他的数据库,有时候对一个Mysql实例需要分开创建若干个库,不同的人员只能访问其对应得数据库,这样就能排上用场了;