ProxySQL官档翻译__05_ProxySQL配置之Users配置

05_ProxySQL配置之Users配置

备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入
~
~

一、用户配置[Users Configuration]

用户在mysql_users中配置。

友情提醒:在阅读下部分之前,请确保了解了ProxySQL使用的多层配置系统。

特别注意:
1)如果没有运行LOAD MYSQL USERS TO RUNTIME,那么mysql_users表中的更改不会生效;
2)如果没有运行SAVE MYSQL USERS TO DISK 保存配置到的磁盘,那么mysql_users表中的更改将在重启/崩溃后丢失。

二、将MySQL用户配置信息从MEMORY层复制到RUNTIME层[Copying mysql users from memory to runtime]

将MySQL用户配置信息从MEMORY层数据库加载到RUNTIME层数据结构:

Admin> LOAD MYSQL USERS TO RUNTIME;

其他可被接受的别名操作:
Admin> LOAD MYSQL USERS TO RUN;

Admin> LOAD MYSQL USERS FROM MEM;

Admin> LOAD MYSQL USERS FROM MEMORY;

三、将MySQL用户配置信息从MEMORY层复制到DISK层[Copying mysql users from memory to disk]

将MySQL用户配置信息从MEMORY层数据库中保留到DISK层数据库:

Admin> SAVE MYSQL USERS TO DISK;

其他可被接受的别名操作:
Admin> SAVE MYSQL USERS FROM MEM;

Admin> SAVE MYSQL USERS FROM MEMORY;

四、将MySQL用户配置信息从RUNTIME层复制到MEMORY层[Copying mysql users from runtime to memory]

将MySQL用户配置信息从RUNTIME层数据结构中保留到MEMORY层数据库中:

Admin> SAVE MYSQL USERS TO MEMORY;

其他可被接受的别名操作:
Admin> SAVE MYSQL USERS TO MEM;

Admin> SAVE MYSQL USERS FROM RUN;

Admin> SAVE MYSQL USERS FROM RUNTIME;

五、将MySQL用户配置信息从DISK层复制到MEMORY层[Copying mysql users from disk to memory]

将MySQL用户配置信息从DISK层数据库加载到MEMORY层数据库:

Admin> LOAD MYSQL USERS TO MEMORY;

其他可被接受的别名操作:
Admin> LOAD MYSQL USERS TO MEM;

Admin> LOAD MYSQL USERS FROM DISK;

六、使用加密密码[Using encrypted passwords]

ProxySQL支持hash处理后的密码,详情参看Password management部分(06_ProxySQL配置之密码管理)。
在后面的示例中,使用的是明文密码。虽然这对于测试是可接受的,但它不适合生产。对于生产,应该只能使用hash后的密码散列。

七、创建新用户[Creating a new user]

为了创建新用户,必须在mysql_users表中插入对应的新行。
注意,该表有几列是有默认值的。

Admin> SELECT * FROM mysql_users;
Empty set (0.00 sec)

Admin> INSERT INTO mysql_users(username,password) VALUES ('user01','password01');
Query OK, 1 row affected (0.00 sec)

Admin> SELECT * FROM mysql_users\G;
*************************** 1. row ***************************
              username: user01
              password: password01
                active: 1
               use_ssl: 0
     default_hostgroup: 0
        default_schema: NULL
         schema_locked: 0
transaction_persistent: 1
          fast_forward: 0
               backend: 1
              frontend: 1
       max_connections: 10000
               comment: 
1 row in set (0.00 sec)

ERROR: 
No query specified

八、创建不使用默认值的新用户[create a new user changing several defaults]

在此示例中,将创建一个新用户:
1)使用dbtest01作为默认(连入)的数据库;
2)默认情况下,将连接到主机组10(主机组十)中的主机。

Admin> SELECT username,password,default_hostgroup,default_schema FROM mysql_users;
+----------+------------+-------------------+----------------+
| username | password   | default_hostgroup | default_schema |
+----------+------------+-------------------+----------------+
| user01   | password01 | 0                 | NULL           |
+----------+------------+-------------------+----------------+
1 row in set (0.00 sec)

Admin> INSERT INTO mysql_users(username,password,default_hostgroup,default_schema) VALUES ('user02','password02',10,'dbtest01'); 
Query OK, 1 row affected (0.00 sec)

Admin> SELECT username,password,default_hostgroup,default_schema FROM mysql_users;
+----------+------------+-------------------+----------------+
| username | password   | default_hostgroup | default_schema |
+----------+------------+-------------------+----------------+
| user01   | password01 | 0                 | NULL           |
| user02   | password02 | 10                | dbtest01       |
+----------+------------+-------------------+----------------+
2 rows in set (0.00 sec)

九、为proxysql创建用户连最大接数限制[Limiting the number of connections a user can create to proxysql]

示例:

Admin> SELECT username,max_connections FROM mysql_users;
+----------+-----------------+
| username | max_connections |
+----------+-----------------+
| user01   | 10000           |
| user02   | 10000           |
+----------+-----------------+
2 rows in set (0.00 sec)

Admin> UPDATE mysql_users SET max_connections=100 WHERE username='user02';
Query OK, 1 row affected (0.00 sec)

Admin> SELECT username,max_connections FROM mysql_users;
+----------+-----------------+
| username | max_connections |
+----------+-----------------+
| user01   | 10000           |
| user02   | 100             |
+----------+-----------------+
2 rows in set (0.00 sec)

十、禁用跨组执行事务[Disabling routing across hostgroups once a transaction has started for a specific user]

一旦针对特定用户启动了事务,就禁用跨主机组的路由

启动事务后,可能会根据查询规则将某些查询发送到其他主机组。为了防止这种情况发生,可以启用transaction_persistent(默认启用)。

示例:

Admin> SELECT username, transaction_persistent FROM mysql_users;
+----------+------------------------+
| username | transaction_persistent |
+----------+------------------------+
| user01   | 1                      |
| user02   | 0                      |
+----------+------------------------+
2 rows in set (0.00 sec)

Admin> UPDATE mysql_users SET transaction_persistent=1 WHERE username='user02';
Query OK, 1 row affected (0.00 sec)

Admin> SELECT username, transaction_persistent FROM mysql_users;
+----------+------------------------+
| username | transaction_persistent |
+----------+------------------------+
| user01   | 1                      |
| user02   | 1                      |
+----------+------------------------+
2 rows in set (0.00 sec)

完毕!

猜你喜欢

转载自blog.51cto.com/4709096/2490809