开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

各位大佬们,下面这个指令,可以只指定给需要的库么? mysql> GRANT SELECT, SHO

各位大佬们,下面这个指令,可以只指定给需要的库么? mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'user' IDENTIFIED BY 'password';

展开
收起
游客3oewgrzrf6o5c 2022-08-30 17:41:21 1910 0
15 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    是的,MySQL 的 GRANT 命令可以指定只给某个数据库或某个表授权,语法如下:

    GRANT privileges ON database.table TO 'user'@'host' IDENTIFIED BY 'password';
    

    其中 privileges 表示需要授权的权限,database.table 表示需要授权的数据库和表,user 表示授权给的用户,@host 表示允许的访问主机,IDENTIFIED BY 'password' 则是用户的密码。

    例如,如果要将 SELECT 权限授权给名为 test 的数据库,可以使用如下命令:

    GRANT SELECT ON test.* TO 'user'@'localhost' IDENTIFIED BY 'password';
    

    这样就只对 test 数据库授予了 SELECT 权限。如果要同时授予多个权限,可以在 GRANT 命令中添加多个权限,例如:

    GRANT SELECT, INSERT, UPDATE ON test.* TO 'user'@'localhost' IDENTIFIED BY 'password';
    

    这样就同时授予了 SELECT、INSERT 和 UPDATE 权限给名为 user 的用户。需要注意的是,授权仅对当前会话有效,如果想要对全局生效,还需要将授权信息添加到 MySQL 的授权表中。

    2023-05-06 11:55:15
    赞同 展开评论 打赏
  • 不可以只指定给需要的库,因为这条指令中的"."表示针对所有数据库。如果想要只授权给某个特定的数据库,可以将"."替换为具体的数据库名。例如,如果想要将授权限制在名为test的数据库中,则可以使用如下的指令:

    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON test.* TO 'user' IDENTIFIED BY 'password';
    

    这样就只授权给了test数据库,而不是所有数据库。

    2023-05-05 17:29:31
    赞同 展开评论 打赏
  • 可以,可以将"."替换成具体的库名,只授权给指定的库。例如:

    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON mydatabase.* TO 'user' IDENTIFIED BY 'password';
    
    2023-05-03 10:41:38
    赞同 展开评论 打赏
  • 是的,可以指定只授权给需要的库。

    在 MySQL 中,可以使用以下语法来为指定的数据库或表添加授权:

    GRANT privileges ON database_or_table_name TO 'user'@'host' IDENTIFIED BY 'password'; 其中,privileges 是授权的权限,如 SELECT、INSERT、UPDATE 等,数据库和表名称可以用 "*" 通配符表示所有库和表。user 是要授权的用户名,host 指定了该用户的主机名,IDENTIFIED BY 'password' 表示该用户的密码为 'password'。

    例如,如果要将 "user" 用户的 SELECT 权限授予 "example_db" 数据库中的所有表,可以使用以下命令:

    GRANT SELECT ON example_db.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 这样,"user" 就只能访问 example_db 数据库中的所有表,而不能访问其他库或表。

    2023-04-27 15:46:22
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    是的,可以只为特定的数据库授权。在 MySQL 中,可以使用 GRANT 命令为用户赋予不同的权限。如果你希望授权的权限仅限于某个特定的数据库或表,可以在权限授权时指定具体的数据库或表。

    例如,要将某个用户(例如 user)赋予只读权限以及 SHOW DATABASES 权限,且限制只能访问 mydatabase 这个数据库,可以执行以下 SQL 语句:

    sql

    GRANT SELECT, SHOW DATABASES ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password';

    在上面的语句中,GRANT 命令指定 SELECT 和 SHOW DATABASES 权限,并且只授权给 mydatabase 数据库下的所有表(即 mydatabase.*)。同时,还通过 IDENTIFIED BY 'password' 指定了授权用户的密码。需要注意的是,在上面的语句中,我们还通过 @'localhost' 来指定该用户只能从本地连接到 MySQL 服务器。

    因此,通过在 GRANT 命令中指定具体的数据库或表,可以更加精细地为用户授权,提高系统安全性。

    2023-04-27 12:20:03
    赞同 展开评论 打赏
  • 是的,可以在GRANT语句中指定授权的数据库和表,以限制用户的权限。例如,下面是一个示例:

    GRANT SELECT, INSERT ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 在上述示例中,我们将SELECT和INSERT权限授予'user'用户,并且限制该用户只能访问'mydatabase'这个数据库,而不能访问其他数据库。同时,我们还指定了用户的主机地址为'localhost',并设置了相应的密码。

    需要注意的是,在使用GRANT语句时,需要仔细考虑用户的权限范围,避免给予过高或过低的权限。同时,也需要保证用户的身份验证安全,防止黑客攻击等风险。建议您根据实际情况进行相应的配置和优化。

    2023-04-26 10:50:46
    赞同 展开评论 打赏
  • 是的,GRANT 命令可以指定授权给特定的数据库或表。你可以通过在授权语句中指定数据库名或表名来实现。

    例如,授权用户 user 只能访问 mydb 数据库,并且只能执行 SELECTINSERT 操作,可以使用以下语句:

    GRANT SELECT, INSERT ON mydb.* TO 'user'@'%' IDENTIFIED BY 'password';
    

    其中,mydb.* 表示授权给 mydb 数据库中的所有表,'%' 表示可以从任何主机访问,IDENTIFIED BY 'password' 表示使用密码进行身份验证。

    如果要授权给多个数据库或表,可以使用逗号分隔,例如:

    GRANT SELECT, INSERT ON mydb1.*, mydb2.mytable TO 'user'@'%' IDENTIFIED BY 'password';
    

    这条语句授权用户 user 访问 mydb1 数据库中的所有表,以及 mydb2 数据库中的 mytable 表。

    需要注意的是,为了安全起见,应该尽量避免使用通配符 *,尽量授权给具体的数据库或表。

    2023-04-25 13:14:33
    赞同 展开评论 打赏
  • 是的,您可以指定特定的数据库来授予权限。例如,如果您想要只授予用户对 mydatabase 数据库的权限,您可以使用以下命令: GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON mydatabase.* TO 'user' IDENTIFIED BY 'password';

    2023-04-25 10:33:41
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,试试这个:

    -- 创建mysql用户
    CREATE USER 'cdc'@'%' IDENTIFIED BY 'cdc';
    -- 赋权
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'cdc'@'%';
     
    -- # 是否启用binlog日志
    show variables like 'log_bin';
    -- # 查看 binlog 内容
    show binlog events;
     
    /*# 事件查询命令
    # IN 'log_name' :指定要查询的binlog文件名(不指定就是第一个binlog文件)
    # FROM pos :指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
    # LIMIT [offset,] :偏移量(不指定就是0)
    # row_count :查询总条数(不指定就是所有行) */
    show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
     
    -- # 设置binlog文件保存事件,过期删除,单位天
    set global expire_logs_days=31; 
     
    # mysqlbinlog查看binlog
    mysqlbinlog --no-defaults --database=etl_test_1210 --base64-output=decode-rows -v --start-datetime='2021-12-03 09:00:00' --stop-datetime='2021-12-03 10:27:00' mysql-bin.000101 
    
    2023-04-24 21:31:56
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    可以给指定需要的库,但是需要修改一下这个sql

    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON dbname.* TO 'user'@'localhost' IDENTIFIED BY 'password';
    

    其中:dbname.* 表示指定数据库名称下的所有表; 'user'@'localhost' 表示指定数据库地址指定用户名 localhost是数据库地址

    2023-04-24 17:20:57
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    可以,你可以使用以下语法指定只给某个库授权:

    Copy code

    GRANT SELECT ON database_name.* TO 'user'@'hostname' IDENTIFIED BY 'password';
    
    

    其中,database_name为要授权的库名,user为要授权的用户名,hostname为该用户所在的主机名,password为该用户的密码。

    2023-04-24 07:54:39
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    这个指令是授权用户对所有数据库的操作权限,因为.表示所有数据库。如果你只想授权给某个特定的数据库,可以将.替换成数据库名,例如:

    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON mydatabase.* TO 'user' IDENTIFIED BY 'password'; 这个指令授权用户对mydatabase数据库的所有表进行SELECT操作,并且可以查看所有数据库、进行复制从服务器和复制客户端操作。

    2023-04-23 19:04:17
    赞同 展开评论 打赏
  • 热爱开发

    可以通过将 . 替换为具体的数据库名或表名来限制授权的范围。例如,如果只想将权限授予 my_database 数据库,可以将指令改为:

    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON my_database.* TO 'user' IDENTIFIED BY 'password'; 其中,* 表示授权给该数据库下的所有表。如果只想授权给该数据库下的某个表,可以将 * 替换为具体的表名。

    需要注意的是,授权操作可能会对系统安全造成影响,请谨慎操作,并确保授权的范围和方式符合实际需求。建议在进行授权操作前,仔细阅读 MySQL 官方文档,并参考相关安全规范和最佳实践进行操作。

    2023-04-23 18:18:35
    赞同 展开评论 打赏
  • 这个指令可以只指定给需要的库。

    GRANT 命令用于授权用户对数据库进行操作。其中,SELECT 和 SHOW DATABASES 是 MySQL 数据库中的两个常用命令,REPLICATION SLAVE 和 REPLICATION CLIENT 是 MySQL 的两个复制方式。

    如果你只想授权 SELECT 和 SHOW DATABASES 命令,可以使用以下命令:

    sql GRANT SELECT ON . TO 'user';
    GRANT SHOW DATABASES ON . TO 'user'; 这将授权 user 用户对 . 表进行 SELECT 和 SHOW DATABASES 操作。如果你只想授权 REPLICATION SLAVE 和 REPLICATION CLIENT 命令,可以使用以下命令:

    sql GRANT REPLICATION SLAVE ON . TO 'user';
    GRANT REPLICATION CLIENT ON . TO 'user'; 这将授权 user 用户对 . 表进行 REPLICATION SLAVE 和 REPLICATION CLIENT 操作。

    2023-04-23 17:27:53
    赞同 展开评论 打赏
  • 存在即是合理

    是的,可以使用以下命令只指定给需要的库:

    
    GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'user' IDENTIFIED BY 'password';
    
    
    

    这将把SELECT权限授予给user,SHOW DATABASES权限授予给user,REPLICATION SLAVE和REPLICATION CLIENT权限授予给user。请注意,这将把这些权限授予给user,而不是给整个数据库。如果希望将这些权限授予给整个数据库,请使用以下命令:

    
    GRANT ALL PRIVILEGES ON . TO 'user';
    
    

    这将把所有权限授予给user。

    2023-04-23 15:48:09
    赞同 展开评论 打赏
滑动查看更多

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像