Mysql从库read-only配置详解

为了防止用户对从库进行插入,采用read-only参数:

配置:

[root@Slave-Mysql data]# grep read-only /etc/my.cnf
read-only

试验过程:

主库授权ALL

mysql> grant all on *.* to 'imbyrd'@'localhost' identified by 'admin';

从库测试:

[root@Slave-Mysql data]# /usr/local/mysql/bin/mysql -uimbyrd -p'admin'
mysql> use hitest;
mysql> insert into test(id,name) values(14,'fo');
Query OK, 1 row affected (0.14 sec)

主库授权select,insert,update,delete

mysql> REVOKE all ON *.* FROM 'imbyrd'@'localhost';
mysql> grant select,insert,update,delete on  *.* to 'imbyrd'@'localhost' identified by 'admin';
mysql> show grants for imbyrd@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for imbyrd@localhost                                                                                                            |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'imbyrd'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

从库测试:

mysql> use hitest;
mysql> insert into test(id,name) values(16,'dddd');
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

主库配置:

mysql> grant all on *.* to 'imbyrd'@'localhost' identified by 'admin';
mysql> show grants for imbyrd@'localhost'\G
*************************** 1. row ***************************
Grants for imbyrd@localhost: GRANT ALL PRIVILEGES ON *.* TO 'imbyrd'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441'
1 row in set (0.00 sec)
mysql> REVOKE SUPER ON *.* FROM 'imbyrd'@'localhost';
mysql> show grants for imbyrd@'localhost'\G
*************************** 1. row ***************************
Grants for imbyrd@localhost: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'imbyrd'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441'
1 row in set (0.00 sec)

从库测试:

[root@Slave-Mysql data]# /usr/local/mysql/bin/mysql -uimbyrd -p'admin'
mysql> use hitest;
mysql> insert into test(id,name) values(23,'fddf');
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

结论:当用户权限中没有SUPER权限(ALL权限是包括SUPER的)时,从库的read-only生效!

时间: 2024-10-28 13:44:02

Mysql从库read-only配置详解的相关文章

基于 CentOS Mysql 安装与主从同步配置详解

CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务 注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得. Window 数据库主从(Master/Slave)同步安装与配置详解 2. Cent

MySQL数据库服务器集群配置详解介绍

一.介绍 这篇文档旨在介绍如何安装配置基于2台服务器的MySQL数据库集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭.同时需要注意的是 并不推荐在集群启动完成后关闭作为管理节点的服务器.尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集 群就无法继续正常工作了,这样也就失去了集群的意义了.出于这个原因

MySql主主(主从)同步配置详解

一.MySQL复制概述 MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志.每个从服务器从主服务器接收主服务器上已经记录到其二进制日志的保存的更新.当一个从服务器连接主服务器时,它通知主服务器定位到从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新.然后封锁并等待

CentOS 6.5 下MySQL 5.7.12主从复制配置详解

为什么使用主从架构? 1.实现服务器负载均衡: 2.通过复制实现数据的异地备份: 3.提高数据库系统的可用性: 4.可以分库[垂直拆分],分表[水平拆分]: 主从配置的前提条件 1.MySQL版本一致: 你还没有安装MySQL? 请参考:CentOS 6.5 下安装MySQL 5.7.12,使用官网下载的rpm安装包 2.MySQL中的数据一致: 不一致就把它们搞一致! 3.操作前停止一切更新操作(写入.更新.删除等): 配置master(主服务器) vi /etc/my.cnf #[必须]启用

MySQL slow_query_log慢查询日志配置详解

slow_query_log是记录SQL执行超过一定时间的参数. slow query log相关变量 1.命令行参数:     --log-slow-queries     指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log 2.系统变量     log_slow_queries     指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log     slow_query_log     slow quere log的

Memcache与MySQL同是使用的配置详解

1.基础    memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护统一的巨大的hash表,它能够用来存储Sessio,当系统需要是从内存中读取,从而大大提高读取速度.OSSIM 4.1以后的所有系统中,采用了Memcached这个高性能的内存对象缓存系统,用于动态Web应用,主要对OSSIM各个数据库读写进行缓存,以减轻MySQL数据库的负载,配置文件读者参考/usr/share/ossim/include/ossim_db.inc./usr/share/ossim/inc

mysql中binlog_format模式与配置详解

① STATEMENT模式(SBR) 每一条会修改数据的sql语句会记录到binlog中.优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能.缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题) ② ROW模式(RBR) 不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了.而且不会出现

PHP MySQL的安装与配置详解_Mysql

 一.安装配置PHP 1.下载Php的版本zip包之后,解压缩到指定目录.下载地址:http://www.php.net/downloads.php 2.在Apache的httpd.conf文件中加入以下 #Php模块加载 LoadModule php5_module "D:/Software/GreenSoft/Php/php5.4.6/php5apache2_2.dll" #php.ini路径设置 PHPIniDir "D:/Software/GreenSoft/Php/

php 伪静态与php mysql apache配置详解

php教程 伪静态与php mysql教程 apache配置详解 配置过程: (一)http.conf   把php直接作为apache的一个模块运行,我在里面加了两句: loadmodule php5_module "e:/php/php5apache2.dll" addtype application/x-httpd-php .php 我在e:apache2目录下建立了一个www的目录用于存放我的站点文件,在http.conf里改了这样一句话: 把documentroot &quo

Docker mysql 主从配置详解及实例_Mysql

Docker mysql 主从配置 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU