首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql开通只读账号

基础概念

MySQL 只读账号是一种特殊的数据库用户账号,该账号只能执行查询操作,而不能执行插入、更新或删除等修改数据的操作。这种账号通常用于提高数据库的安全性和稳定性,尤其是在多用户环境下,可以防止误操作或恶意攻击。

相关优势

  1. 安全性:只读账号限制了用户对数据库的修改权限,减少了数据被误修改或恶意篡改的风险。
  2. 稳定性:在高并发读取场景下,使用只读账号可以分散主数据库的压力,提高系统的整体稳定性。
  3. 审计和监控:通过只读账号,可以更容易地追踪和审计数据库的查询操作,有助于发现潜在的问题或违规行为。

类型

MySQL 只读账号主要分为以下几类:

  1. 全局只读账号:该账号在 MySQL 实例的所有数据库上都具有一致的只读权限。
  2. 数据库级只读账号:该账号仅在特定的数据库上具有只读权限。
  3. 表级只读账号:该账号仅在特定的表上具有只读权限。

应用场景

  1. 数据备份和恢复:在备份数据库时,可以使用只读账号来执行查询操作,确保备份数据的准确性。
  2. 数据分析和报表:只读账号可以用于数据分析和报表生成,避免对原始数据进行修改。
  3. 高并发读取场景:在需要处理大量读取请求的场景下,使用只读账号可以分散主数据库的压力,提高系统的响应速度。

如何开通 MySQL 只读账号

以下是一个简单的示例,展示如何在 MySQL 中创建一个只读账号:

代码语言:txt
复制
-- 创建一个全局只读账号
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON *.* TO 'readonly_user'@'%';

-- 创建一个数据库级只读账号
CREATE USER 'db_readonly_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON mydatabase.* TO 'db_readonly_user'@'%';

-- 创建一个表级只读账号
CREATE USER 'table_readonly_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON mydatabase.mytable TO 'table_readonly_user'@'%';

可能遇到的问题及解决方法

  1. 权限不足:如果尝试执行修改数据的操作,会收到权限不足的错误。确保账号的权限设置正确,并且没有其他更高权限的账号覆盖了这些设置。
  2. 连接问题:如果无法连接到 MySQL 数据库,检查账号的连接权限和网络设置。确保账号具有从当前主机连接的权限,并且网络连接正常。
  3. 性能问题:在高并发读取场景下,如果性能不佳,可以考虑优化数据库配置、增加硬件资源或使用读写分离等技术来提高性能。

参考链接

请注意,在实际应用中,应根据具体需求和安全策略来设置和管理数据库账号的权限。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PG中只读账号的授权操作

日常工作中,我们通常开给研发2个账号(一个只读账号,读写账号) 读写账号自不必说, ,每次用这个账号建表后,自然就用了CRUD的权限。...但是,只读账号稍微费事点,如果我们处理不好的话,每次新加表都要再执行一次对只读账号的重新授权操作。好在PG为我们考虑好了这个场景,也是有方法解决的。...login password '123456';     -- 创建只读账号 create database ticket;   -- 创建测试用数据库 alter database ticket owner...to rd ;   # 对rd账号授权,当前已有的表的只读权限  (注意:这个命令对于当前已有的表生效。...对于后期新创建的表,是没有加其它的授权) alter role rd  set default_transaction_read_only=true;   -- 给rd用户设置只读模式 然后,我们使用rw

2.7K20
  • MySQL设置数据库为只读

    前言: 默认情况下,我们的 MySQL 实例是可读写的。但有些情况下,我们可以将整个实例设置为只读状态,比如做迁移维护的时候或者将从库设为只读。本篇文章我们来看下 MySQL 设置只读相关知识。...1.关于 read_only 参数 MySQL系统中,提供有 read_only 和 super_read_only 两个只读参数,参考官方文档,这里介绍下这两个参数的作用: read_only 参数默认不开启...执行此命令会给数据库加全局读锁,使得数据库处于只读状态,以下语句会被阻塞:数据更新语句(增删改)、数据定义语句(建表、修改表结构等)和更新类事务的提交语句。...以个人数据库运维经验来讲,一般只有从库需要设置只读状态,从库端建议开启 read_only 或 super_read_only,避免人为写入。...总结: 本篇文章主要介绍了 MySQL 只读状态相关知识,其实除了从库外,其余实例很少设置全局只读,只是遇到某种需求的情况下需要将数据库设为只读状态,写本篇文章的目的也是遇到此类需求时,可以有个参考。

    7.6K10

    MySQL权限开通的设计方案

    MySQL中的权限管理和其他数据库还是有很大的不同,它能够实现几种很特别的权限场景: 几个人公用一个账号,看起来用户名相同,密码相同,但是权限缺可以不同 几个人用同一个账号,用户名相同,但是密码可以不同...,权限可以相同 几个人用同一个账号,用户名相同,但是密码可以不同,权限可以不同。...主要的原因就在于MySQL的权限认证中是按照用户和主机名两个维度结合来考量的。...,比如指定10个表,开通权限的时候可能权限语句就需要10条。...如果有多个IP要开通权限,那么我们需要手工构造很多重复繁琐的权限语句 每次开通权限的时候,对于密码都是一个头疼的格式,密码太简单不好,输入的多一些,手工输入的时候其实会发现密码好像不够随机。

    83310

    Mysql的read_only 只读属性说明 (运维笔记)

    MySQL数据库中,在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-Slave主从关系设置, 以下针对real_only只读属性做些笔记记录: 1) 对于MySQL单实例数据库和...master库,如果需要设置为只读状态,需要进行如下操作和设置: 将MySQL设置为只读状态的命令: mysql> show global variables like "%read_only%"; mysql...%"; 将MySQL只读状态设置为读写状态的命令: mysql> unlock tables; mysql> set global read_only=0; 2) 对于需要保证master-slave...主从同步的salve库 将slave从库设置为只读状态,需要执行的命令为: mysql> set global read_only=1; 将salve库从只读状态变为读写状态,需要执行的命令是: mysql...1) read_only=1只读模式,不会影响slave同步复制的功能,所以在MySQL slave库中设定了read_only=1后,通过 "show slave status\G" 命令查看salve

    4.7K20

    ProxySQL + MySQL MGR读写分离架构的Sysbench只读压测报告

    实验结果表明: 在不引入负载均衡、ProxySQL Cluster 等中间件的理想情况下,【应用直连 MGR 2 个只读实例】QPS 最大值能达到 100w,为【应用直连 MySQL Master】的只读...实验发现,【4 层负载均衡 +ProxySQL Cluster+MGR 读写分离】架构的只读 QPS 最大值为 89w,约为【应用直连 MySQL Master】的只读 QPS 最大值 37w 的 2.4...3.3.1 MySQL 设置 MGR:单主模式。共 3 个节点,其中 1 个只写节点,2 个只读节点。max_connection 设为 3000。...只读模式。...总 结 【4 层负载均衡 + ProxySQL Cluster + MGR 读写分离】架构适用于在大量并发读请求场景,只读 QPS 最大能达到 89w,约为【应用直连 MySQL Master】的只读

    86820

    MySQL MHA部署 Part 4 MHA部署前准备

    实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 操作系统账号:mysql 数据库复制账号:repl 复制格式:基于行的复制 MHA版本: 0.56 IP地址 主从关系...复制账号 复制格式 11.12.14.29 主库 repl Row-Based 11.12.14.30 从库(半同步/备master) repl Row-Based 11.12.14.39 从库(异步)...打开防火墙 如果防火墙开始,需要开通服务器间3306端口的通信 7.关闭relay日志自动清理 由于默认情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的...从库开启只读 从库需要设置只读模式 2台从库 read_only=1 9....参考资料 https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/ http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster

    34721

    如何使用用户名为空(匿名账号)的账号登录mysql数据库

    导读巡检的时候, 发现数据库存在用户名为空的账号.分析哪来的这个空账号?...低版本的mysql安装的时候会创建用户名为空的账号, 然后升级到高版本的时候附带了这个账号.但官方生成的那个匿名账号是 ''@'localhost'的. 所以这个账号很大可能是业务创建的....勉强算是安全.尝试登录下这个账号如果我们直接使用命令行登录:mysql -h127.0.0.1 -P3314 -p12345678 --user ''发现会用户名会自动识别为 操作系统用户名....虽然mysql里存在匿名账号, 但是要求有密码要求, 也还算安全.2. 无法直接使用mysql命令和业务程序连接. 因为会自动使用当前OS用户作为mysql用户连接. (所以这账号到底有啥用?)3....匿名账号可能影响审计之类的, 建议清楚匿名账号(即使它要密码才能登录)源码看之前的文章即可

    54110

    mysql 更改密码 alter_MySQL修改账号密码方法大全「建议收藏」

    使用 alter user 修改 比如如果想更改 testuser 账号的密码,我们可以使用 root 账号登录,然后执行 alter user 命令更改 testuser 账号的密码。...PASSWORD 命令 使用 SET PASSWORD 修改密码命令格式为 SET PASSWORD FOR ‘username’@’host’ = PASSWORD(‘newpass’); 同样是使用 root 账号可修改其他账号的密码...Type ‘\c’ to clear the current input statement. mysql> 直接 update user 表 其实 MySQL 所以的账号信息都存储在 mysql.user...假设我们想配置 root 账号在本地快捷登录,可以这么做:# 执行回车后需要输入一次root密码 [root@host ~]# mysql_config_editor set –login-path=root...Type ‘\c’ to clear the current input statement. mysql> 总结: 本篇文章主要介绍了修改数据库账号密码的几种方法,基本涵盖了所有的场景。

    4.2K10

    技术分享 | MySQL 存储过程中的只读语句超时怎么办?

    作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。...目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。...---MySQL 有一个参数叫 max_execution_time ,用来设置只读语句执行的超时时间,但是仅对单独执行的 select 语句有效;对于非单独执行的 select 语句,比如包含在存储过程...既然 MySQL 层面有这样的限制,那只能从非 MySQL 层面来想办法。最直接有效的就是写个脚本来主动 cancel 掉 select 语句。...如下所示:pt-kill 工具会在后台一直运行,监听 MySQL 进程,一旦触发条件被激活,即可执行相应动作。

    1.3K20

    只读实例与RO组--助力MySQL实现读写分离,提升扩展性

    CDB for MySQL支持只读实例,并且添加了RO组的概念,以实现读写分离和读能力的扩展。整体架构如下所示: RO组是只读实例的集合,一个RO组共享一个地址,通过VIP:VPORT进行访问。...同时还可以设置其中的只读实例的权重,从而进行流量负载均衡。用户根据需要部署RO组和只读实例,并将相应的读请求按一定规则发送到只读实例。...只读实例和主实例之间通过通过Binlog进行数据同步;只读实例的规格可以和主实例不同,但一般建议大于等于主实例规格。...同一个RO组的只读实例根据权重自动分配流量。如果RO组内某个只读实例宕机,流量会根据权重配置自动重新均衡,对应用完全透明。 健康检查 CDB为主实例和只读实例都提供了拨测、监控和报警功能。...在开启了自动剔除功能的情况下,如果有只读实例的主从差距超过设置的阈值,那么只读实例会被隔离,不会再有流量分配到此只读实例上;如果只读实例主从差距恢复,那么只读实例会被自动加回RO组,继续服务读请求。

    2.3K40

    新特性解读 | MySQL 8.0 支持对单个数据库设置只读

    1新特性概要 对单个数据库设置只读状态,可以通过 ALTER DATABASE 语句中的 READ ONLY 选项来实现,该选项在 MySQL 8.0.22 版本[1] 中引入,用于控制是否允许对数据库及其对象...) #session1,再次查一下数据库的只读状态,OPTIONS值为“READ ONLY=1”,数据库只读状态修改成功 MySQL localhost:3000 ssl SQL > SELECT...#session1,表lfq.my_table更新数据测试,数据库只读状态表更新数据失败 MySQL localhost:3000 ssl lfq SQL > UPDATE my_table SET...#session2,查询数据库只读状态,数据库为只读状态,session1修改lfq数据库为只读,session2中lfq的只读状态是立即生效的 MySQL localhost:3000 ssl...5例外情况 不受数据库只读状态的约束。 作为 MySQL 服务初始化,重启,升级,复制功能中的一部分执行的语句。 在服务器启动时由 init_file 系统变量命名的文件中的语句。

    56910

    技术分享 | MySQL 存储过程中的只读语句超时怎么办?

    作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。...目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。...---- MySQL 有一个参数叫 max_execution_time ,用来设置只读语句执行的超时时间,但是仅对单独执行的 select 语句有效;对于非单独执行的 select 语句,比如包含在存储过程...既然 MySQL 层面有这样的限制,那只能从非 MySQL 层面来想办法。最直接有效的就是写个脚本来主动 cancel 掉 select 语句。...如下所示:pt-kill 工具会在后台一直运行,监听 MySQL 进程,一旦触发条件被激活,即可执行相应动作。

    1.4K30
    领券