MySQL创建只读账号

应用场景:只要公司有数据团队的,那免不了让这帮家伙把全公司的数据库数据都摸一遍,但是要是直接把root用户给了他们,未免有点危险,于是只能给这帮人设权限,一般而言,他们只是做读操作,既然做读操作,那么只要有个select权限就可以了。

我们可以通过GRANT来创建用户:

GRANT SElECT ON *.* TO 'read_only_user'@'ip'  IDENTIFIED BY "pa$$word"

其实这个语句与开通远程连接差不多,read_only_user就是用户名,随便起,ip就是允许连接到这个数据库的ip,当然如果不限制ip,那就写成%,最后的pa$$word就是连接密码了。

查看一下权限:

mysql> select * from user where User='read_only_user' G;
*************************** 1. row ***************************
                  Host: %
                  User: read_only_user
           Select_priv: Y
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *C3E77E59B58D282CF2021CD59752359091C4ED51
      password_expired: N
 password_last_changed: 2017-05-25 00:10:37
     password_lifetime: NULL
        account_locked: N
1 row in set (0.01 sec)

发现除了Select_priv是Y,其他的全部为N。

原文地址:https://www.cnblogs.com/sos-blue/p/8952509.html