备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入
~
~mysql
用户在mysql_users中配置。git
友情提醒:在阅读下部分以前,请确保了解了ProxySQL使用的多层配置系统。github
特别注意:
1)若是没有运行LOAD MYSQL USERS TO RUNTIME,那么mysql_users表中的更改不会生效;
2)若是没有运行SAVE MYSQL USERS TO DISK 保存配置到的磁盘,那么mysql_users表中的更改将在重启/崩溃后丢失。sql
将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层数据库:数据结构
Admin> SAVE MYSQL USERS TO DISK; 其余可被接受的别名操做: Admin> SAVE MYSQL USERS FROM MEM; Admin> SAVE MYSQL USERS FROM 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;
将MySQL用户配置信息从DISK层数据库加载到MEMORY层数据库:ide
Admin> LOAD MYSQL USERS TO MEMORY; 其余可被接受的别名操做: Admin> LOAD MYSQL USERS TO MEM; Admin> LOAD MYSQL USERS FROM DISK;
ProxySQL支持hash处理后的密码,详情参看Password management部分(06_ProxySQL配置之密码管理)。
在后面的示例中,使用的是明文密码。虽然这对于测试是可接受的,但它不适合生产。对于生产,应该只能使用hash后的密码散列。测试
为了建立新用户,必须在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
在此示例中,将建立一个新用户:
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)
示例:
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)
一旦针对特定用户启动了事务,就禁用跨主机组的路由
启动事务后,可能会根据查询规则将某些查询发送到其余主机组。为了防止这种状况发生,能够启用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)
完毕!