| 
  redis开启远程访问 redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf 打开redis.conf文件在NETWORK部分有说明  
 
 解决办法:注释掉bind 127.0.0.1可以使所有的ip访问redis 
  
  若是想指定多个ip访问,但并不是全部的ip访问,可以bind 
  
  在redis 
 3.2之后,redis增加了 
 protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,如下 
  
修改办法:protected-mode no  
 
 ################################## NETWORK #####################################
 
# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1  
  
   
 
 # Protected mode is a layer of security protection, in order to avoid that
# Redis instances left open on the internet are accessed and exploited.
#
# When protected mode is on and if:
#
# 1) The server is not binding explicitly to a set of addresses using the
#    "bind" directive.
# 2) No password is configured.
#
# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode yes  
  
http://www.cnblogs.com/liusxg/p/5712493.html  
 
 
 
   
密码不正确的情况:  
# mysql -uroot -h192.168.1.20 testDb -p Enter password:  ERROR 1045 (28000): Authentication Failed For RDS maybe username or password is incorrect  
   
远程mysql服务器没有开启远程访问:  
# mysql -uroot -h192.168.1.20 testDb -p Enter password:  ERROR 1045 (28000): Access denied for user 'root'@'192.168.1.20' (using password: YES) 解决办法:  
 
 update user set host="%" where user="root";
flush privileges;//刷新数据库
quit  
  
此时用户root只能通过远程访问。在本地也必须要使用-h指定本机ip 如果想允许本机不使用-h参数,需要: insert into mysql.user(Host,User,Password) values(‘localhost’,'roo’,password(‘root’));  
或 insert into mysql.user(host,user,password) values select 'localhost',user,passoword from mysql.user where user='root' and host='%';//限定host是确定只有一条记录,不然会报错
 
   
 
 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'  
  
 
 mysql> show create table mysql.user;
+-------+-----------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+-------+-----------------------------------------+
| user  | CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(64) COLLATE utf8_bin DEFAULT 'mysql_native_password',
  `authentication_string` text COLLATE utf8_bin,
  `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' | 
  
   
  //刷新系统权限表 mysql>flush privileges;    
   
用户没有对db操作权限的解决办法:  
 
 mysql> grant all on testDb.* to root@%;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1
mysql> grant all privileges  on testDb.*  to root@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> 
远程mysql客户端需要重启后,才能生效  
  
   
   
   
   
   
   
更改mysql用户密码的操作:  
 
 use mysql;
select user,host,password from mysql.user;
    +------+-----------+-------------------------------------------+
    | user | host      | password                                  |
    +------+-----------+-------------------------------------------+
    | root | localhost | *CF1E6A25C954B638A451D6|
    | root | centos64  |                                           |
    | root | 127.0.0.1 |                                           |
    |      | localhost |                                           |
    |      | centos64  |                                           |
    +------+-----------+-------------------------------------------+
update mysql.user set password=PASSWORD("***********") where User='root'; 
  
   
   
来一组管理常用操作的流程:  
 
 用户管理
mysql>use mysql;
查看
mysql> select host,user,password from user ;
创建
mysql> create user  zx_root   IDENTIFIED by 'xxxxx';   //identified by 会将纯文本密码加密作为散列值存储
修改
mysql>rename   user  feng  to   newuser;//mysql 5之后可以使用,之前需要使用update 更新user表
删除
mysql>drop user newuser;   //mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限
更改密码
mysql> set password for zx_root =password('xxxxxx');
 mysql> update  mysql.user  set  password=password('xxxx')  where user='otheruser'
查看用户权限
mysql> show grants for zx_root;
赋予权限
mysql> grant select on dmc_db.*  to zx_root;
回收权限
mysql> revoke  select on dmc_db.*  from  zx_root;  //如果权限不存在会报错 
  
   
  上面的命令也可使用多个权限同时赋予和回收,权限之间使用逗号分隔 
  
  mysql> grant select,update,delete  ,insert  on dmc_db.*  to  zx_root; 
  
  如果想立即看到结果使用 
  
  flush  privileges ; 
  
  命令更新  
  
    
  
  设置权限时必须给出一下信息 
  
  1,要授予的权限 
  
  2,被授予访问权限的数据库或表 
  
  3,用户名 
  
  grant和revoke可以在几个层次上控制访问权限 
  
  1,整个服务器,使用 grant ALL  和revoke  ALL 
  
  2,整个数据库,使用on  database.* 
  
  3,特点表,使用on  database.table 
  
  4,特定的列 
  
  5,特定的存储过程 
  
    
  
  user表中host列的值的意义 
  
  %              匹配所有主机 
  
  localhost    localhost不会被解析成IP地址,直接通过UNIXsocket连接 
  
  127.0.0.1      会通过TCP/IP协议连接,并且只能在本机访问; 
  
  ::1                 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1 
  
    
  
    
  
 
 grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。  
 grant select on testdb.* to common_user@’%’  
 grant insert on testdb.* to common_user@’%’  
 grant update on testdb.* to common_user@’%’  
 grant delete on testdb.* to common_user@’%’  
 或者,用一条 MySQL 命令来替代:  
 grant select, insert, update, delete on testdb.* to common_user@’%’  
 9>.grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。  
 grant 创建、修改、删除 MySQL 数据表结构权限。  
 grant create on testdb.* to developer@’192.168.0.%’;  
 grant alter on testdb.* to developer@’192.168.0.%’;  
 grant drop on testdb.* to developer@’192.168.0.%’;  
 grant 操作 MySQL 外键权限。  
 grant references on testdb.* to developer@’192.168.0.%’;  
 grant 操作 MySQL 临时表权限。  
 grant create temporary tables on testdb.* to developer@’192.168.0.%’;  
 grant 操作 MySQL 索引权限。  
 grant index on testdb.* to developer@’192.168.0.%’;  
 grant 操作 MySQL 视图、查看视图源代码 权限。  
 grant create view on testdb.* to developer@’192.168.0.%’;  
 grant show view on testdb.* to developer@’192.168.0.%’;  
 grant 操作 MySQL 存储过程、函数 权限。  
 grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status  
 grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure  
 grant execute on testdb.* to developer@’192.168.0.%’;  
 10>.grant 普通 DBA 管理某个 MySQL 数据库的权限。  
 grant all privileges on testdb to dba@’localhost’  
 其中,关键字 “privileges” 可以省略。  
 11>.grant 高级 DBA 管理 MySQL 中所有数据库的权限。  
 grant all on *.* to dba@’localhost’  
 12>.MySQL grant 权限,分别可以作用在多个层次上。  
 1. grant 作用在整个 MySQL 服务器上:  
 grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。  
 grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库  
 2. grant 作用在单个数据库上:  
 grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。  
 3. grant 作用在单个数据表上:  
 grant select, insert, update, delete on testdb.orders to dba@localhost;  
 4. grant 作用在表中的列上:  
 grant select(id, se, rank) on testdb.apache_log to dba@localhost;  
 5. grant 作用在存储过程、函数上:  
 grant execute on procedure testdb.pr_add to ’dba’@’localhost’  
 grant execute on function testdb.fn_add to ’dba’@’localhost’  注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES。 
   
    
  
    
  
  权限表 
  
 
  
   
    
    | 权限 |  
    说明 |  
     
    
    | all |  
      |  
     
    
    | alter |  
      |  
     
    
    | alter routine |  
    使用alter procedure 和drop procedure |  
     
    
    | create |  
      |  
     
    
    | create routine |  
    使用create  procedure |  
     
   
   
  
 
  
   
    
    | create temporary tables |  
    使用create temporary table |  
     
    
    | create  user |  
      |  
     
    
    | create view |  
      |  
     
    
    | delete |  
      |  
     
    
    | drop |  
      |  
     
    
    | execute |  
    使用call和存储过程 |  
     
   
   
  
 
  
   
    
    | file |  
    使用select into outfile  和load data infile |  
     
    
    | grant option |  
    可以使用grant和revoke |  
     
    
    | index |  
    可以使用create index 和drop index |  
     
    
    | insert |  
      |  
     
    
    | lock tables |  
    锁表 |  
     
    
    | process |  
    使用show full processlist |  
     
   
   
  
 
  
   
    
    | reload |  
       使用flush |  
     
    
    | replication client |  
    服务器位置访问 |  
     
    
    | replocation slave |  
    由复制从属使用 |  
     
    
    | select |  
      |  
     
    
    | show databases |  
      |  
     
    
    | show view |  
      |  
     
   
   
  
 
  
   
    
    | shutdown |  
    使用mysqladmin shutdown 来关闭mysql |  
     
    
    | super |  
      |  
     
    
    | update |  
      |  
     
    
    | usage |  
    无访问权限 |  
     
    
    |   |  
      |  
     
    
    |   |  
      |  
     
   
   
  
    
  
http://www.cnblogs.com/fslnet/p/3143344.html  
   
   
   
   
   
   
   
 
 
 
 
 
 
 
 
 
 
 
 
   
   |