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

05_ProxySQL配置之Users配置

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

1、用户配置[Users Configuration]

用户在mysql_users中配置。git

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

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

2、将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;

3、将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;

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

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

Admin> SAVE MYSQL USERS TO MEMORY;

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

Admin> SAVE MYSQL USERS FROM RUN;

Admin> SAVE MYSQL USERS FROM RUNTIME;

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

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

Admin> LOAD MYSQL USERS TO MEMORY;

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

Admin> LOAD MYSQL USERS FROM DISK;

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

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

7、建立新用户[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

8、建立不使用默认值的新用户[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)

9、为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)

10、禁用跨组执行事务[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)

完毕!

相关文章
相关标签/搜索