mysql 数据库授权(给某个用户授权某个数据库)

1.新建用户。

//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp  密码为:1234  的用户。

然后登录一下。

mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功

2.为用户授权。

//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;

mysql>其它操作



先设置该用户只有show database权限

grant select,insert,update,delete on redmine1.* to jira@"%" identified by "jira";


参考:

http://www.cnblogs.com/analyzer/articles/1045072.html

http://www.cnblogs.com/jifeng/archive/2011/03/06/1972183.html


===============================================

授权任何主机访问:

grant all privileges on flower.* to 'flower'@'%' identified by '123456' with grant option;


 flush privileges;

参考:http://www.2cto.com/database/201211/167563.html


====================================================================

  Mysql授权远程访问

       

       在安装mysql的机器上运行: 

  1、d:\mysql\bin\>mysql -h localhost -u root 

  //这样应该可以进入MySQL服务器 

  2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION 

  //赋予任何主机访问数据的权限 

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 

  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码 

  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

  3、mysql>FLUSH PRIVILEGES 


===========================================================

本地访问加密码和远程一致,方便调试:

方法一
使用phpmyadmin,这是最简单的了,修改mysql库的user表,
不过别忘了使用PASSWORD函数。

方法二
使用mysqladmin,这是前面声明的一个特例。
mysqladmin -u root -p password mypasswd
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
把命令里的root改为你的用户名,你就可以改你自己的密码了。
当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
那么这种方法就是无效的。
而且mysqladmin无法把密码清空。

下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
方法三
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES(%,jeffrey,PASSWORD(iscuit));
mysql> FLUSH PRIVILEGES
确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。
在《mysql中文参考手册》里有这个例子,所以我也就写出来了。
注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

方法四
和方法三一样,只是使用了REPLACE语句
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES(%,jeffrey,PASSWORD(iscuit));
mysql> FLUSH PRIVILEGES

方法五
使用SET PASSWORD语句,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD(iscuit);
你也必须使用PASSWORD()函数,
但是不需要使用FLUSH PRIVILEGES。

方法六
使用GRANT ... IDENTIFIED BY语句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY iscuit;
这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。
注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。



SQLyog Enterprise V8.14 汉化绿色特别版

http://www.cncrk.com/downinfo/3315.html

注册码:http://blog.sina.com.cn/s/blog_654fa3630100vbld.html


今天刚刚装上了SQLyog 8.14,没想到是没有注册的版本,于是上网搜索了一个注册码,经验证有效。

用户名:yunjian

注册码:81f43d3dd20872b6


 


 

==========================================

整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!

方法1: 用SET PASSWORD命令

  mysql -u root

  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

方法2:用mysqladmin

  mysqladmin -u root password "newpass"

  如果root已经设置过密码,采用如下方法

  mysqladmin -u root password oldpass "newpass"

方法3: 用UPDATE直接编辑user表

  mysql -u root

  mysql> use mysql;

  mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';

  mysql> FLUSH PRIVILEGES;

在丢失root密码的时候,可以这样

  mysqld_safe --skip-grant-tables&

  mysql -u root mysql

  mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';

  mysql> FLUSH PRIVILEGES;



======================================================================

远程连接MySQL, 10038问题

http://blog.csdn.net/chana1101/article/details/39641415 

ubuntu server下安装了MySQL 5.5数据库,然后在windows下通过Navicat for MySQL连接时,出现 Can't connect to mysql server on xxx.xxx.xxx.xxx(10038) 的问题。

解决方案如下:

1、授权

mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  with grant option;

mysql>flush privileges;

2、修改/etc/mysql/my.conf

找到bind-address = 127.0.0.1这一行

改为bind-address = 0.0.0.0即可


MySQL中授权(grant)和撤销授权(revoke)

http://blog.csdn.net/andy_yf/article/details/7487519 

MySQL 赋予用户权限命令的简单格式可概括为:

[sql] view plaincopyprint?

  1. grant 权限 on 数据库对象 to 用户  

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利

[sql] view plaincopyprint?

  1. grant select on testdb.* to common_user@'%'  

  2. grant insert on testdb.* to common_user@'%'  

  3. grant update on testdb.* to common_user@'%'  

  4. grant delete on testdb.* to common_user@'%'  

或者,用一条 MySQL 命令来替代:

[sql] view plaincopyprint?

  1. grant selectinsertupdatedelete on testdb.* to common_user@'%'  

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数等权限

grant 创建、修改、删除 MySQL 数据表结构权限。

[sql] view plaincopyprint?

  1. grant create on testdb.* to developer@'192.168.0.%';  

  2. grant alter  on testdb.* to developer@'192.168.0.%';  

  3. grant drop   on testdb.* to developer@'192.168.0.%';  

grant 操作 MySQL 外键权限:

[sql] view plaincopyprint?

  1. grant references on testdb.* to developer@'192.168.0.%';  

grant 操作 MySQL 临时表权限:

[sql] view plaincopyprint?

  1. grant create temporary tables on testdb.* to developer@'192.168.0.%';  

grant 操作 MySQL 索引权限:

[sql] view plaincopyprint?

  1. grant index on testdb.* to developer@'192.168.0.%';  

grant 操作 MySQL 视图、查看视图源代码权限:

[sql] view plaincopyprint?

  1. grant create view on testdb.* to developer@'192.168.0.%';  

  2. grant show   view on testdb.* to developer@'192.168.0.%';  

grant 操作 MySQL 存储过程、函数权限:

[sql] view plaincopyprint?

  1. grant create routine on testdb.* to developer@'192.168.0.%'-- now, can show procedure status  

  2. grant alter  routine on testdb.* to developer@'192.168.0.%'-- now, you can drop a procedure  

  3. grant execute        on testdb.* to developer@'192.168.0.%';  

三、grant 普通 DBA 管理某个 MySQL 数据库的权限

[sql] view plaincopyprint?

  1. grant all privileges on testdb to dba@'localhost'  

其中,关键字 “privileges” 可以省略。

四、grant 高级 DBA 管理 MySQL 中所有数据库的权限:

[sql] view plaincopyprint?

  1. grant all on *.* to dba@'localhost'  

五、MySQL grant 权限,分别可以作用在多个层次上

1. grant 作用在整个 MySQL 服务器上:

[sql] view plaincopyprint?

  1. grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。  

  2. grant all    on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库  

2. grant 作用在单个数据库上:

[sql] view plaincopyprint?

  1. grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。  

3. grant 作用在单个数据表上:

[sql] view plaincopyprint?

  1. grant selectinsertupdatedelete on testdb.orders to dba@localhost;  

这里在给一个用户授权多张表时,可以多次执行以上语句。例如:

[sql] view plaincopyprint?

  1. grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345';  

  2. grant select on smp.mo_sms to mo_user@'%' identified by '123345';  

4. grant 作用在表中的列上:

[sql] view plaincopyprint?

  1. grant select(id, se, rank) on testdb.apache_log to dba@localhost;  

5. grant 作用在存储过程、函数上:

[sql] view plaincopyprint?

  1. grant execute on procedure testdb.pr_add to 'dba'@'localhost'  

  2. grant execute on function testdb.fn_add to 'dba'@'localhost'  

六、查看 MySQL 用户权限

查看当前用户(自己)权限:

[sql] view plaincopyprint?

  1. show grants;  

查看其他 MySQL 用户权限:

[sql] view plaincopyprint?

  1. show grants for dba@localhost;  

七、撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

[sql] view plaincopyprint?

  1. grant  all on *.* to   dba@localhost;  

  2. revoke all on *.* from dba@localhost;  

八、MySQL grant、revoke 用户权限注意事项

1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“

[sql] view plaincopyprint?

  1. grant select on testdb.* to dba@localhost with grant option;  

这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。


补充:

mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

授权表的内容有如下用途:
user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。


你可能感兴趣的:(mysql 数据库授权(给某个用户授权某个数据库))