This is an automated email from the ASF dual-hosted git repository.

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 55b219a  Move the user configuration to authority rule (#10287)
55b219a is described below

commit 55b219a9a2d337be454f71f45951b6a87974c727
Author: Zhu jun <zhujunxx...@163.com>
AuthorDate: Mon May 10 15:08:46 2021 +0800

    Move the user configuration to authority rule (#10287)
    
    * move the user configuration to authority rule
    
    * adapter config
    
    * adapter config
    
    * fix test
    
    * fix test
    
    * fix yaml
---
 .../sharding-proxy/sharding/conf/server.yaml       |  8 +++++--
 .../src/main/resources/conf/server.yaml            | 10 ++++++---
 .../src/main/resources/conf/server.yaml            |  8 +++++--
 .../metadata/GovernanceMetaDataContexts.java       |  6 ++---
 .../governance/core/facade/GovernanceFacade.java   |  6 ++---
 .../governance/core/registry/RegistryCenter.java   | 10 +--------
 .../core/facade/GovernanceFacadeTest.java          |  6 ++---
 .../core/registry/RegistryCenterTest.java          |  3 +--
 .../api/config/AuthorityRuleConfiguration.java     |  7 +++++-
 .../rule/builder/AuthorityRuleBuilder.java         |  6 ++---
 .../DefaultAuthorityRuleConfigurationBuilder.java  |  3 ++-
 .../config/YamlAuthorityRuleConfiguration.java     |  7 +++++-
 .../AuthorityRuleConfigurationYamlSwapper.java     |  8 ++++++-
 .../rule/builder/ShardingSphereRulesBuilder.java   |  6 ++---
 .../rule/builder/scope/GlobalRuleBuilder.java      |  5 +----
 .../shardingsphere-infra-context/pom.xml           |  5 +++++
 .../context/metadata/MetaDataContextsBuilder.java  | 25 ++++++++++++++-------
 .../metadata/MetaDataContextsBuilderTest.java      | 20 +++++++++++++++++
 .../GovernanceShardingSphereDataSource.java        |  2 +-
 .../impl/AbstractBootstrapInitializer.java         |  2 +-
 .../impl/GovernanceBootstrapInitializer.java       |  7 +++---
 .../impl/GovernanceBootstrapInitializerTest.java   |  1 -
 .../impl/StandardBootstrapInitializerTest.java     | 26 ++++++++++++++++++----
 .../src/test/resources/conf/local/server.yaml      | 10 ++++++---
 .../src/test/resources/conf/reg_center/server.yaml |  8 +++++++
 .../proxy/config/ProxyConfiguration.java           |  3 ---
 .../proxy/config/ProxyConfigurationLoader.java     |  5 ++++-
 .../config/yaml/YamlProxyServerConfiguration.java  |  2 --
 .../swapper/YamlProxyConfigurationSwapper.java     |  6 ++---
 .../swapper/YamlProxyConfigurationSwapperTest.java | 23 +++++++++++++++++--
 .../src/test/resources/conf/server.yaml            |  8 +++++--
 .../test/resources/docker/proxy/conf/server.yaml   |  8 +++++--
 .../adapter/ShardingSphereAdapterContainer.java    | 16 ++++++++++++-
 .../integration/engine/it/dql/GeneralDQLIT.java    |  4 ++--
 .../resources/docker/db/proxy/conf/server.yaml     |  8 +++++--
 .../proxy/conf/server.yaml                         |  8 +++++--
 .../proxy/conf/server.yaml                         |  8 +++++--
 .../docker/encrypt/proxy/conf/server.yaml          |  8 +++++--
 .../readwrite_splitting/proxy/conf/server.yaml     |  8 +++++--
 .../sharding_governance/proxy/conf/server.yaml     |  8 +++++--
 .../resources/docker/tbl/proxy/conf/server.yaml    |  8 +++++--
 41 files changed, 236 insertions(+), 100 deletions(-)

diff --git a/examples/docker/sharding-proxy/sharding/conf/server.yaml 
b/examples/docker/sharding-proxy/sharding/conf/server.yaml
index 8544fab..43afc71 100644
--- a/examples/docker/sharding-proxy/sharding/conf/server.yaml
+++ b/examples/docker/sharding-proxy/sharding/conf/server.yaml
@@ -28,8 +28,12 @@
 #    serverLists: localhost:2181
 #  overwrite: false
 
-users:
-  - root@%:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@%:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/server.yaml
 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/server.yaml
index f07d391..7d9185c 100644
--- 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/server.yaml
+++ 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-boot-mybatis-example/src/main/resources/conf/server.yaml
@@ -33,9 +33,13 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: false
 
-users:
-  - root@:root
-  - sharding@%:sharding
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+      - sharding@:sharding
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/server.yaml
 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/server.yaml
index b03947f..5fc4da6 100644
--- 
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/server.yaml
+++ 
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/resources/conf/server.yaml
@@ -33,8 +33,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: false
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
 
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index 111686b..859a3c3 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -334,7 +334,7 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
                 Collections.singletonMap(schemaName, 
governanceFacade.getRegistryCenter().loadRuleConfigurations(schemaName)),
                 // TODO load global schema from reg center
                 new LinkedList<>(), 
-                metaDataContexts.getUsers().getUsers(), 
metaDataContexts.getProps().getProps());
+                metaDataContexts.getProps().getProps());
         return 
metaDataContextsBuilder.build().getMetaDataMap().get(schemaName);
     }
     
@@ -366,7 +366,7 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
     private ShardingSphereMetaData getChangedMetaData(final 
ShardingSphereMetaData oldMetaData, final Collection<RuleConfiguration> 
ruleConfigs) throws SQLException {
         // TODO load global schema from reg center
         MetaDataContextsBuilder builder = new 
MetaDataContextsBuilder(Collections.singletonMap(oldMetaData.getName(), 
oldMetaData.getResource().getDataSources()),
-                Collections.singletonMap(oldMetaData.getName(), ruleConfigs), 
new LinkedList<>(), metaDataContexts.getUsers().getUsers(), 
metaDataContexts.getProps().getProps());
+                Collections.singletonMap(oldMetaData.getName(), ruleConfigs), 
new LinkedList<>(), metaDataContexts.getProps().getProps());
         return builder.build().getMetaDataMap().values().iterator().next();
     }
     
@@ -379,7 +379,7 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
                 getNewDataSources(oldMetaData.getResource().getDataSources(), 
getAddedDataSources(oldMetaData, newDataSourceConfigs), modifiedDataSources, 
deletedDataSources));
         // TODO load global schema from reg center
         return new MetaDataContextsBuilder(dataSourcesMap, 
Collections.singletonMap(oldMetaData.getName(), 
oldMetaData.getRuleMetaData().getConfigurations()), new LinkedList<>(),
-                metaDataContexts.getUsers().getUsers(), 
metaDataContexts.getProps().getProps()).build().getMetaDataMap().get(oldMetaData.getName());
+                
metaDataContexts.getProps().getProps()).build().getMetaDataMap().get(oldMetaData.getName());
     }
     
     private Map<String, DataSource> getNewDataSources(final Map<String, 
DataSource> oldDataSources, 
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java
index 3869e2e..9c3b5b0 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.governance.core.registry.listener.GovernanceLis
 import 
org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 
 import java.util.Collection;
 import java.util.Map;
@@ -66,12 +65,11 @@ public final class GovernanceFacade implements 
AutoCloseable {
      *
      * @param dataSourceConfigMap schema data source configuration map
      * @param schemaRuleMap schema rule map
-     * @param users users
      * @param props properties
      */
     public void onlineInstance(final Map<String, Map<String, 
DataSourceConfiguration>> dataSourceConfigMap,
-                               final Map<String, 
Collection<RuleConfiguration>> schemaRuleMap, final 
Collection<ShardingSphereUser> users, final Properties props) {
-        registryCenter.persistGlobalConfiguration(users, props, isOverwrite);
+                               final Map<String, 
Collection<RuleConfiguration>> schemaRuleMap, final Properties props) {
+        registryCenter.persistGlobalConfiguration(props, isOverwrite);
         for (Entry<String, Map<String, DataSourceConfiguration>> entry : 
dataSourceConfigMap.entrySet()) {
             registryCenter.persistConfigurations(entry.getKey(), 
dataSourceConfigMap.get(entry.getKey()), schemaRuleMap.get(entry.getKey()), 
isOverwrite);
         }
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
index 6345f04..243c9ea 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
@@ -124,12 +124,10 @@ public final class RegistryCenter {
     /**
      * Persist global configuration.
      *
-     * @param users user
      * @param props properties
      * @param isOverwrite is overwrite config center's configuration
      */
-    public void persistGlobalConfiguration(final 
Collection<ShardingSphereUser> users, final Properties props, final boolean 
isOverwrite) {
-        persistUsers(users, isOverwrite);
+    public void persistGlobalConfiguration(final Properties props, final 
boolean isOverwrite) {
         persistProperties(props, isOverwrite);
     }
     
@@ -198,12 +196,6 @@ public final class RegistryCenter {
         return result;
     }
 
-    private void persistUsers(final Collection<ShardingSphereUser> users, 
final boolean isOverwrite) {
-        if (!users.isEmpty() && (isOverwrite || !hasUsers())) {
-            repository.persist(node.getUsersNode(), 
YamlEngine.marshal(YamlUsersConfigurationConverter.convertYamlUserConfigurations(users)));
-        }
-    }
-
     private void persistNewUsers(final Collection<ShardingSphereUser> users) {
         if (!users.isEmpty()) {
             Collection<String> yamlUsers = 
YamlEngine.unmarshal(repository.get(node.getUsersNode()), Collection.class);
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacadeTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacadeTest.java
index 095b5ad..4c2a4f1 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacadeTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacadeTest.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.governance.repository.api.config.GovernanceCent
 import 
org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -68,11 +67,10 @@ public final class GovernanceFacadeTest {
     public void assertOnlineInstanceWithParameters() {
         Map<String, DataSourceConfiguration> dataSourceConfigMap = 
Collections.singletonMap("test_ds", mock(DataSourceConfiguration.class));
         Map<String, Collection<RuleConfiguration>> ruleConfigurationMap = 
Collections.singletonMap("sharding_db", 
Collections.singletonList(mock(RuleConfiguration.class)));
-        ShardingSphereUser user = new ShardingSphereUser("root", "root", "");
         Properties props = new Properties();
-        
governanceFacade.onlineInstance(Collections.singletonMap("sharding_db", 
dataSourceConfigMap), ruleConfigurationMap, Collections.singleton(user), props);
+        
governanceFacade.onlineInstance(Collections.singletonMap("sharding_db", 
dataSourceConfigMap), ruleConfigurationMap, props);
         verify(registryCenter).persistConfigurations("sharding_db", 
dataSourceConfigMap, ruleConfigurationMap.get("sharding_db"), false);
-        
verify(registryCenter).persistGlobalConfiguration(Collections.singleton(user), 
props, false);
+        verify(registryCenter).persistGlobalConfiguration(props, false);
         verify(registryCenter).persistInstanceOnline();
         verify(registryCenter).persistDataNodes();
         verify(listenerManager).initListeners();
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
index e0b2b43..ecfe006 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
@@ -39,7 +39,6 @@ import 
org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.schema.refresher.event.SchemaAlteredEvent;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
-import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
 import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
@@ -318,7 +317,7 @@ public final class RegistryCenterTest {
     @Test
     public void assertPersistGlobalConfiguration() {
         RegistryCenter registryCenter = new RegistryCenter(registryRepository);
-        
registryCenter.persistGlobalConfiguration(YamlUsersConfigurationConverter.convertShardingSphereUser(YamlEngine.unmarshal(readYAML(USERS_YAML),
 Collection.class)), createProperties(), true);
+        registryCenter.persistGlobalConfiguration(createProperties(), true);
         verify(registryRepository, times(0)).persist("/users", 
readYAML(USERS_YAML));
         verify(registryRepository).persist("/props", PROPS_YAML);
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-api/src/main/java/org/apache/shardingsphere/authority/api/config/AuthorityRuleConfiguration.java
 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-api/src/main/java/org/apache/shardingsphere/authority/api/config/AuthorityRuleConfiguration.java
index 3297762..f6d5d6a 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-api/src/main/java/org/apache/shardingsphere/authority/api/config/AuthorityRuleConfiguration.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-api/src/main/java/org/apache/shardingsphere/authority/api/config/AuthorityRuleConfiguration.java
@@ -21,6 +21,9 @@ import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
+
+import java.util.Collection;
 
 /**
  * Authority rule configuration.
@@ -28,6 +31,8 @@ import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmC
 @RequiredArgsConstructor
 @Getter
 public final class AuthorityRuleConfiguration implements RuleConfiguration {
-    
+
+    private final Collection<ShardingSphereUser> users;
+
     private final ShardingSphereAlgorithmConfiguration provider;
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
index 2c19a8f..8225db3 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilder.java
@@ -21,11 +21,9 @@ import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration
 import org.apache.shardingsphere.authority.constant.AuthorityOrder;
 import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.builder.level.KernelRuleBuilder;
 import org.apache.shardingsphere.infra.rule.builder.scope.GlobalRuleBuilder;
 
-import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -34,8 +32,8 @@ import java.util.Map;
 public final class AuthorityRuleBuilder implements KernelRuleBuilder, 
GlobalRuleBuilder<AuthorityRule, AuthorityRuleConfiguration> {
     
     @Override
-    public AuthorityRule build(final AuthorityRuleConfiguration ruleConfig, 
final Map<String, ShardingSphereMetaData> mataDataMap, final 
Collection<ShardingSphereUser> users) {
-        return new AuthorityRule(ruleConfig, mataDataMap, users);
+    public AuthorityRule build(final AuthorityRuleConfiguration ruleConfig, 
final Map<String, ShardingSphereMetaData> mataDataMap) {
+        return new AuthorityRule(ruleConfig, mataDataMap, 
ruleConfig.getUsers());
     }
     
     @Override
diff --git 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/DefaultAuthorityRuleConfigurationBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/DefaultAuthorityRuleConfigurationBuilder.java
index 3e4d1d5..eec4b1c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/DefaultAuthorityRuleConfigurationBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/rule/builder/DefaultAuthorityRuleConfigurationBuilder.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.authority.constant.AuthorityOrder;
 import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.rule.builder.level.DefaultKernelRuleConfigurationBuilder;
 
+import java.util.Collections;
 import java.util.Properties;
 
 /**
@@ -31,7 +32,7 @@ public final class DefaultAuthorityRuleConfigurationBuilder 
implements DefaultKe
     
     @Override
     public AuthorityRuleConfiguration build() {
-        return new AuthorityRuleConfiguration(new 
ShardingSphereAlgorithmConfiguration("NATIVE", new Properties()));
+        return new AuthorityRuleConfiguration(Collections.emptyList(), new 
ShardingSphereAlgorithmConfiguration("NATIVE", new Properties()));
     }
     
     @Override
diff --git 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
index 7c1c623..6d9ba6c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java
@@ -23,13 +23,18 @@ import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration
 import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.algorithm.YamlShardingSphereAlgorithmConfiguration;
 
+import java.util.Collection;
+import java.util.LinkedList;
+
 /**
  * Authority rule configuration for YAML.
  */
 @Getter
 @Setter
 public final class YamlAuthorityRuleConfiguration implements 
YamlRuleConfiguration {
-    
+
+    private Collection<String> users = new LinkedList<>();
+
     private YamlShardingSphereAlgorithmConfiguration provider;
     
     @Override
diff --git 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/AuthorityRuleConfigurationYamlSwapper.java
 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/AuthorityRuleConfigurationYamlSwapper.java
index 9bded9a..d718a25 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/AuthorityRuleConfigurationYamlSwapper.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-authority/shardingsphere-infra-authority-common/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/AuthorityRuleConfigurationYamlSwapper.java
@@ -20,9 +20,13 @@ package org.apache.shardingsphere.authority.yaml.swapper;
 import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.authority.constant.AuthorityOrder;
 import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
+import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
+import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.swapper.algorithm.ShardingSphereAlgorithmConfigurationYamlSwapper;
 
+import java.util.Collection;
+
 /**
  * Authority rule configuration YAML swapper.
  */
@@ -34,12 +38,14 @@ public final class AuthorityRuleConfigurationYamlSwapper 
implements YamlRuleConf
     public YamlAuthorityRuleConfiguration swapToYamlConfiguration(final 
AuthorityRuleConfiguration data) {
         YamlAuthorityRuleConfiguration result = new 
YamlAuthorityRuleConfiguration();
         
result.setProvider(algorithmSwapper.swapToYamlConfiguration(data.getProvider()));
+        
result.setUsers(YamlUsersConfigurationConverter.convertYamlUserConfigurations(data.getUsers()));
         return result;
     }
     
     @Override
     public AuthorityRuleConfiguration swapToObject(final 
YamlAuthorityRuleConfiguration yamlConfig) {
-        return new 
AuthorityRuleConfiguration(algorithmSwapper.swapToObject(yamlConfig.getProvider()));
+        Collection<ShardingSphereUser> users = 
YamlUsersConfigurationConverter.convertShardingSphereUser(yamlConfig.getUsers());
+        return new AuthorityRuleConfiguration(users, 
algorithmSwapper.swapToObject(yamlConfig.getProvider()));
     }
     
     @Override
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
index d6052dd..fa5af12 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
@@ -22,7 +22,6 @@ import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.builder.level.DefaultKernelRuleConfigurationBuilder;
 import org.apache.shardingsphere.infra.rule.builder.level.KernelRuleBuilder;
@@ -89,17 +88,16 @@ public final class ShardingSphereRulesBuilder {
      *
      * @param globalRuleConfigurations global rule configurations
      * @param mataDataMap mata data map
-     * @param users users
      * @return built global rules
      */
     @SuppressWarnings({"unchecked", "rawtypes"})
     public static Collection<ShardingSphereRule> buildGlobalRules(final 
Collection<RuleConfiguration> globalRuleConfigurations, 
-                                                                  final 
Map<String, ShardingSphereMetaData> mataDataMap, final 
Collection<ShardingSphereUser> users) {
+                                                                  final 
Map<String, ShardingSphereMetaData> mataDataMap) {
         Map<RuleConfiguration, GlobalRuleBuilder> builders = 
OrderedSPIRegistry.getRegisteredServices(globalRuleConfigurations, 
GlobalRuleBuilder.class);
         appendDefaultKernelGlobalRuleConfigurationBuilder(builders);
         Collection<ShardingSphereRule> result = new LinkedList<>();
         for (Entry<RuleConfiguration, GlobalRuleBuilder> entry : 
builders.entrySet()) {
-            result.add(entry.getValue().build(entry.getKey(), mataDataMap, 
users));
+            result.add(entry.getValue().build(entry.getKey(), mataDataMap));
         }
         return result;
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/scope/GlobalRuleBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/scope/GlobalRuleBuilder.java
index 2c94f92..e8ea38e 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/scope/GlobalRuleBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/scope/GlobalRuleBuilder.java
@@ -19,10 +19,8 @@ package org.apache.shardingsphere.infra.rule.builder.scope;
 
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
 
-import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -38,8 +36,7 @@ public interface GlobalRuleBuilder<R extends GlobalRule, T 
extends RuleConfigura
      *
      * @param ruleConfig rule configuration
      * @param mataDataMap mata data map
-     * @param users users
      * @return global rule
      */
-    R build(T ruleConfig, Map<String, ShardingSphereMetaData> mataDataMap, 
Collection<ShardingSphereUser> users);
+    R build(T ruleConfig, Map<String, ShardingSphereMetaData> mataDataMap);
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-context/pom.xml 
b/shardingsphere-infra/shardingsphere-infra-context/pom.xml
index d286666..6da6ce71 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/pom.xml
+++ b/shardingsphere-infra/shardingsphere-infra-context/pom.xml
@@ -49,6 +49,11 @@
             <artifactId>shardingsphere-infra-optimize</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-authority-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
index 8c98c53..13ec156 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.context.metadata;
 
+import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
 import org.apache.shardingsphere.infra.config.DatabaseAccessConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
@@ -43,6 +44,7 @@ import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -62,23 +64,20 @@ public final class MetaDataContextsBuilder {
     
     private final Collection<RuleConfiguration> globalRuleConfigs;
     
-    private final Collection<ShardingSphereUser> users;
-    
     private final ConfigurationProperties props;
     
     private final ExecutorEngine executorEngine;
     
     public MetaDataContextsBuilder(final Map<String, Map<String, DataSource>> 
dataSources, final Map<String, Collection<RuleConfiguration>> 
schemaRuleConfigs, final Properties props) {
-        this(dataSources, schemaRuleConfigs, new LinkedList<>(), new 
LinkedList<>(), props);
+        this(dataSources, schemaRuleConfigs, new LinkedList<>(), props);
     }
     
     public MetaDataContextsBuilder(final Map<String, Map<String, DataSource>> 
dataSources,
                                    final Map<String, 
Collection<RuleConfiguration>> schemaRuleConfigs, final 
Collection<RuleConfiguration> globalRuleConfigs, 
-                                   final Collection<ShardingSphereUser> users, 
final Properties props) {
+                                   final Properties props) {
         this.dataSources = dataSources;
         this.schemaRuleConfigs = schemaRuleConfigs;
         this.globalRuleConfigs = globalRuleConfigs;
-        this.users = users;
         this.props = new ConfigurationProperties(null == props ? new 
Properties() : props);
         executorEngine = new 
ExecutorEngine(this.props.<Integer>getValue(ConfigurationPropertyKey.EXECUTOR_SIZE));
     }
@@ -94,7 +93,7 @@ public final class MetaDataContextsBuilder {
         for (String each : schemaRuleConfigs.keySet()) {
             mataDataMap.put(each, buildMetaData(each));
         }
-        return new StandardMetaDataContexts(mataDataMap, 
buildGlobalSchemaMetaData(mataDataMap), executorEngine, new 
ShardingSphereUsers(users), props);
+        return new StandardMetaDataContexts(mataDataMap, 
buildGlobalSchemaMetaData(mataDataMap), executorEngine, new 
ShardingSphereUsers(getUsersFromAuthorityRule()), props);
     }
     
     private ShardingSphereMetaData buildMetaData(final String schemaName) 
throws SQLException {
@@ -105,9 +104,9 @@ public final class MetaDataContextsBuilder {
         ShardingSphereRuleMetaData ruleMetaData = new 
ShardingSphereRuleMetaData(ruleConfigs, rules);
         return new ShardingSphereMetaData(schemaName, 
buildResource(databaseType, dataSourceMap), ruleMetaData, 
buildSchema(databaseType, dataSourceMap, rules));
     }
-    
+
     private ShardingSphereRuleMetaData buildGlobalSchemaMetaData(final 
Map<String, ShardingSphereMetaData> mataDataMap) {
-        return new ShardingSphereRuleMetaData(globalRuleConfigs, 
ShardingSphereRulesBuilder.buildGlobalRules(globalRuleConfigs, mataDataMap, 
users));
+        return new ShardingSphereRuleMetaData(globalRuleConfigs, 
ShardingSphereRulesBuilder.buildGlobalRules(globalRuleConfigs, mataDataMap));
     }
     
     private ShardingSphereResource buildResource(final DatabaseType 
databaseType, final Map<String, DataSource> dataSourceMap) throws SQLException {
@@ -140,4 +139,14 @@ public final class MetaDataContextsBuilder {
     private ShardingSphereSchema buildSchema(final DatabaseType databaseType, 
final Map<String, DataSource> dataSourceMap, final 
Collection<ShardingSphereRule> rules) throws SQLException {
         return SchemaBuilder.build(new SchemaBuilderMaterials(databaseType, 
dataSourceMap, rules, props));
     }
+
+    private Collection<ShardingSphereUser> getUsersFromAuthorityRule() {
+        for (RuleConfiguration ruleConfig : globalRuleConfigs) {
+            if (ruleConfig instanceof AuthorityRuleConfiguration) {
+                AuthorityRuleConfiguration authorityRuleConfiguration = 
(AuthorityRuleConfiguration) ruleConfig;
+                return authorityRuleConfiguration.getUsers();
+            }
+        }
+        return Collections.emptyList();
+    }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilderTest.java
index 64543f9..041ca21 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilderTest.java
@@ -17,9 +17,11 @@
 
 package org.apache.shardingsphere.infra.context.metadata;
 
+import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.context.fixture.FixtureRule;
 import 
org.apache.shardingsphere.infra.context.fixture.FixtureRuleConfiguration;
+import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.hamcrest.CoreMatchers;
 import org.junit.Test;
@@ -42,6 +44,7 @@ public final class MetaDataContextsBuilderTest {
         MetaDataContexts actual = new 
MetaDataContextsBuilder(Collections.emptyMap(), Collections.emptyMap(), 
null).build();
         assertTrue(actual.getAllSchemaNames().isEmpty());
         assertTrue(actual.getProps().getProps().isEmpty());
+        assertTrue(actual.getUsers().getUsers().isEmpty());
     }
     
     @Test
@@ -67,6 +70,23 @@ public final class MetaDataContextsBuilderTest {
         assertThat(actual.getProps().getProps().size(), is(1));
         
assertThat(actual.getProps().getValue(ConfigurationPropertyKey.EXECUTOR_SIZE), 
is(1));
     }
+
+    @Test
+    public void assertBuildWithAuthorityRuleConfigurations() throws 
SQLException {
+        Properties props = new Properties();
+        props.setProperty(ConfigurationPropertyKey.EXECUTOR_SIZE.getKey(), 
"1");
+        ShardingSphereUser user = new ShardingSphereUser("root", "root", "");
+        AuthorityRuleConfiguration authorityRuleConfig = new 
AuthorityRuleConfiguration(Collections.singleton(user), null);
+
+        MetaDataContexts actual = new MetaDataContextsBuilder(
+                Collections.singletonMap("logic_db", Collections.emptyMap()), 
Collections.singletonMap("logic_db",
+                Collections.singleton(new FixtureRuleConfiguration())), 
Collections.singleton(authorityRuleConfig), props).build();
+        assertRules(actual);
+        
assertTrue(actual.getMetaData("logic_db").getResource().getDataSources().isEmpty());
+        assertThat(actual.getProps().getProps().size(), is(1));
+        
assertThat(actual.getProps().getValue(ConfigurationPropertyKey.EXECUTOR_SIZE), 
is(1));
+        assertThat(actual.getUsers().getUsers().size(), is(1));
+    }
     
     private void assertRules(final MetaDataContexts actual) {
         
assertThat(actual.getMetaData("logic_db").getRuleMetaData().getRules().size(), 
is(1));
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
index c4e2f00..3317aaa 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
@@ -124,7 +124,7 @@ public final class GovernanceShardingSphereDataSource 
extends AbstractUnsupporte
         Map<String, DataSourceConfiguration> dataSourceConfigs = 
DataSourceConverter.getDataSourceConfigurationMap(metaDataContexts.getDefaultMetaData().getResource().getDataSources());
         Collection<RuleConfiguration> ruleConfigurations = 
metaDataContexts.getDefaultMetaData().getRuleMetaData().getConfigurations();
         
governanceFacade.onlineInstance(Collections.singletonMap(DefaultSchema.LOGIC_NAME,
 dataSourceConfigs),
-                Collections.singletonMap(DefaultSchema.LOGIC_NAME, 
ruleConfigurations), Collections.emptyList(), 
metaDataContexts.getProps().getProps());
+                Collections.singletonMap(DefaultSchema.LOGIC_NAME, 
ruleConfigurations), metaDataContexts.getProps().getProps());
     }
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
index 3cf080f..851ca93 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
@@ -80,7 +80,7 @@ public abstract class AbstractBootstrapInitializer implements 
BootstrapInitializ
     private MetaDataContexts createMetaDataContexts(final ProxyConfiguration 
proxyConfig) throws SQLException {
         Map<String, Map<String, DataSource>> dataSourcesMap = 
createDataSourcesMap(proxyConfig.getSchemaDataSources());
         MetaDataContextsBuilder metaDataContextsBuilder = new 
MetaDataContextsBuilder(
-                dataSourcesMap, proxyConfig.getSchemaRules(), 
proxyConfig.getGlobalRules(), proxyConfig.getUsers(), proxyConfig.getProps());
+                dataSourcesMap, proxyConfig.getSchemaRules(), 
proxyConfig.getGlobalRules(), proxyConfig.getProps());
         return metaDataContextsBuilder.build();
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
index 5feab64..30da5db 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
 import 
org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
-import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
@@ -68,12 +67,12 @@ public final class GovernanceBootstrapInitializer extends 
AbstractBootstrapIniti
             governanceFacade.onlineInstance();
         } else {
             
governanceFacade.onlineInstance(getDataSourceConfigurationMap(ruleConfigs), 
-                    getRuleConfigurations(ruleConfigs), 
YamlUsersConfigurationConverter.convertShardingSphereUser(serverConfig.getUsers()),
 serverConfig.getProps());
+                    getRuleConfigurations(ruleConfigs), 
serverConfig.getProps());
         }
     }
     
     private boolean isEmptyLocalConfiguration(final 
YamlProxyServerConfiguration serverConfig, final Map<String, 
YamlProxyRuleConfiguration> ruleConfigs) {
-        return ruleConfigs.isEmpty() && null == serverConfig.getUsers() && 
serverConfig.getProps().isEmpty();
+        return ruleConfigs.isEmpty() && serverConfig.getProps().isEmpty();
     }
     
     private Map<String, Map<String, DataSourceConfiguration>> 
getDataSourceConfigurationMap(final Map<String, YamlProxyRuleConfiguration> 
ruleConfigs) {
@@ -97,7 +96,7 @@ public final class GovernanceBootstrapInitializer extends 
AbstractBootstrapIniti
         Map<String, Collection<RuleConfiguration>> schemaRules = 
loadSchemaRules(schemaNames);
         Properties props = 
governanceFacade.getRegistryCenter().loadProperties();
         // TODO load global rules from reg center
-        return new ProxyConfiguration(schemaDataSources, schemaRules, 
Collections.emptyList(), governanceFacade.getRegistryCenter().loadUsers(), 
props);
+        return new ProxyConfiguration(schemaDataSources, schemaRules, 
Collections.emptyList(), props);
     }
     
     private Map<String, Map<String, DataSourceParameter>> 
loadDataSourceParametersMap(final Collection<String> schemaNames) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
index 8003ead..bc16b67 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
@@ -112,7 +112,6 @@ public final class GovernanceBootstrapInitializerTest 
extends AbstractBootstrapI
         assertNotNull(actual);
         assertSchemaDataSources(actual.getSchemaDataSources());
         assertSchemaRules(actual.getSchemaRules());
-        assertUsers(new ShardingSphereUsers(actual.getUsers()));
         assertProps(actual.getProps());
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
index 71a9ff5..3f84346 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.proxy.initializer.impl;
 
+import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
+import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
@@ -25,6 +27,7 @@ import 
org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUsers;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.algorithm.YamlShardingSphereAlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
@@ -108,10 +111,20 @@ public final class StandardBootstrapInitializerTest 
extends AbstractBootstrapIni
     private void assertProxyConfiguration(final ProxyConfiguration actual) {
         assertSchemaDataSources(actual.getSchemaDataSources());
         assertSchemaRules(actual.getSchemaRules());
-        assertUsers(new ShardingSphereUsers(actual.getUsers()));
+        assertUsers(new 
ShardingSphereUsers(getUsersFromAuthorityRule(actual.getGlobalRules())));
         assertProps(actual.getProps());
     }
-    
+
+    private Collection<ShardingSphereUser> getUsersFromAuthorityRule(final 
Collection<RuleConfiguration> globalRuleConfigs) {
+        for (RuleConfiguration ruleConfig : globalRuleConfigs) {
+            if (ruleConfig instanceof AuthorityRuleConfiguration) {
+                AuthorityRuleConfiguration authorityRuleConfiguration = 
(AuthorityRuleConfiguration) ruleConfig;
+                return authorityRuleConfiguration.getUsers();
+            }
+        }
+        return Collections.emptyList();
+    }
+
     private void assertSchemaDataSources(final Map<String, Map<String, 
DataSourceParameter>> actual) {
         assertThat(actual.size(), is(1));
         assertTrue(actual.containsKey("logic-db"));
@@ -153,8 +166,13 @@ public final class StandardBootstrapInitializerTest 
extends AbstractBootstrapIni
     }
     
     private YamlProxyServerConfiguration createYamlProxyServerConfiguration() {
-        YamlProxyServerConfiguration result = new 
YamlProxyServerConfiguration();
-        result.getUsers().add("root@:root");
+        final YamlProxyServerConfiguration result = new 
YamlProxyServerConfiguration();
+        YamlAuthorityRuleConfiguration yamlRule = new 
YamlAuthorityRuleConfiguration();
+        yamlRule.setUsers(Collections.singletonList("root@%:root"));
+        YamlShardingSphereAlgorithmConfiguration provider = new 
YamlShardingSphereAlgorithmConfiguration();
+        provider.setType("test");
+        yamlRule.setProvider(provider);
+        result.getRules().add(yamlRule);
         result.setProps(createProperties());
         return result;
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/local/server.yaml
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/local/server.yaml
index e229a8a..6bef22f 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/local/server.yaml
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/local/server.yaml
@@ -27,9 +27,13 @@ governance:
       operationTimeoutMilliseconds: 500
   overwrite: false
 
-users:
-  - root@:root
-  - sharding@:sharding
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+      - sharding@:sharding
+    provider:
+      type: NATIVE
 
 props:
   alpha-1: alpha-A
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/server.yaml
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/server.yaml
index e8bbed9..eae6868 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/server.yaml
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/server.yaml
@@ -26,3 +26,11 @@ governance:
       maxRetries: 3
       operationTimeoutMilliseconds: 500
   overwrite: false
+
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+      - sharding@:sharding
+    provider:
+      type: NATIVE
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfiguration.java
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfiguration.java
index 732018c..2b32054 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfiguration.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfiguration.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.proxy.config;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 
@@ -40,7 +39,5 @@ public final class ProxyConfiguration {
     
     private final Collection<RuleConfiguration> globalRules;
     
-    private final Collection<ShardingSphereUser> users;
-    
     private final Properties props;
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationLoader.java
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationLoader.java
index d4669c4..49116cd 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationLoader.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationLoader.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.proxy.config;
 import com.google.common.base.Preconditions;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration;
 import 
org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
@@ -71,7 +73,8 @@ public final class ProxyConfigurationLoader {
     private static YamlProxyServerConfiguration loadServerConfiguration(final 
File yamlFile) throws IOException {
         YamlProxyServerConfiguration result = YamlEngine.unmarshal(yamlFile, 
YamlProxyServerConfiguration.class);
         Preconditions.checkNotNull(result, "Server configuration file `%s` is 
invalid.", yamlFile.getName());
-        Preconditions.checkState(!result.getUsers().isEmpty() || null != 
result.getGovernance(), "Authority configuration is invalid.");
+        YamlRuleConfiguration authorityRuleConfig = 
result.getRules().stream().filter(ruleConfig -> ruleConfig instanceof 
YamlAuthorityRuleConfiguration).findAny().orElse(null);
+        Preconditions.checkState(null != result.getGovernance() || null != 
authorityRuleConfig, "Authority configuration is invalid.");
         return result;
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/YamlProxyServerConfiguration.java
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/YamlProxyServerConfiguration.java
index 8d27f82..52fef6d 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/YamlProxyServerConfiguration.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/YamlProxyServerConfiguration.java
@@ -35,8 +35,6 @@ import java.util.Properties;
 @Setter
 public final class YamlProxyServerConfiguration implements YamlConfiguration {
     
-    private Collection<String> users = new LinkedList<>();
-    
     private YamlGovernanceConfiguration governance;
     
     private YamlScalingConfiguration scaling;
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
index 935551f..53d7823 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
@@ -19,8 +19,6 @@ package org.apache.shardingsphere.proxy.config.yaml.swapper;
 
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
-import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
@@ -49,9 +47,9 @@ public final class YamlProxyConfigurationSwapper {
         Map<String, Map<String, DataSourceParameter>> schemaDataSources = 
getDataSourceParametersMap(yamlConfig.getRuleConfigurations());
         Map<String, Collection<RuleConfiguration>> schemaRules = 
getRuleConfigurations(yamlConfig.getRuleConfigurations());
         Collection<RuleConfiguration> globalRules = new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(yamlConfig.getServerConfiguration().getRules());
-        Collection<ShardingSphereUser> users = 
YamlUsersConfigurationConverter.convertShardingSphereUser(yamlConfig.getServerConfiguration().getUsers());
+
         Properties props = yamlConfig.getServerConfiguration().getProps();
-        return new ProxyConfiguration(schemaDataSources, schemaRules, 
globalRules, users, props);
+        return new ProxyConfiguration(schemaDataSources, schemaRules, 
globalRules, props);
     }
     
     private Map<String, Collection<RuleConfiguration>> 
getRuleConfigurations(final Map<String, YamlProxyRuleConfiguration> 
yamlRuleConfigurations) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
index 9eb8b91..134bc20 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
@@ -18,6 +18,8 @@
 package org.apache.shardingsphere.proxy.config.yaml.swapper;
 
 import com.google.common.collect.Lists;
+import 
org.apache.shardingsphere.authority.api.config.AuthorityRuleConfiguration;
+import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
 import 
org.apache.shardingsphere.governance.core.yaml.config.YamlGovernanceCenterConfiguration;
 import 
org.apache.shardingsphere.governance.core.yaml.config.YamlGovernanceConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -26,6 +28,7 @@ import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUsers;
 import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
+import 
org.apache.shardingsphere.infra.yaml.config.algorithm.YamlShardingSphereAlgorithmConfiguration;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.yaml.YamlDataSourceParameter;
@@ -36,6 +39,7 @@ import 
org.apache.shardingsphere.readwritesplitting.common.yaml.config.YamlReadw
 import org.junit.Test;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
@@ -102,10 +106,20 @@ public final class YamlProxyConfigurationSwapperTest {
     }
     
     private void assertAuthority(final ProxyConfiguration proxyConfig) {
-        Optional<ShardingSphereUser> user = new 
ShardingSphereUsers(proxyConfig.getUsers()).findUser(new Grantee("user1", ""));
+        Optional<ShardingSphereUser> user = new 
ShardingSphereUsers(getUsersFromAuthorityRule(proxyConfig.getGlobalRules())).findUser(new
 Grantee("user1", ""));
         assertTrue(user.isPresent());
         assertThat(user.get().getPassword(), is("pass"));
     }
+
+    private Collection<ShardingSphereUser> getUsersFromAuthorityRule(final 
Collection<RuleConfiguration> globalRuleConfigs) {
+        for (RuleConfiguration ruleConfig : globalRuleConfigs) {
+            if (ruleConfig instanceof AuthorityRuleConfiguration) {
+                AuthorityRuleConfiguration authorityRuleConfiguration = 
(AuthorityRuleConfiguration) ruleConfig;
+                return authorityRuleConfiguration.getUsers();
+            }
+        }
+        return Collections.emptyList();
+    }
     
     private YamlProxyConfiguration getYamlProxyConfiguration() {
         YamlProxyConfiguration result = mock(YamlProxyConfiguration.class);
@@ -195,7 +209,12 @@ public final class YamlProxyConfigurationSwapperTest {
     }
     
     private void prepareAuthentication(final YamlProxyServerConfiguration 
yamlProxyServerConfig) {
-        when(yamlProxyServerConfig.getUsers()).thenReturn(getUsers());
+        YamlAuthorityRuleConfiguration yamlAuthorityRuleConfig = new 
YamlAuthorityRuleConfiguration();
+        yamlAuthorityRuleConfig.setUsers(getUsers());
+        YamlShardingSphereAlgorithmConfiguration provider = new 
YamlShardingSphereAlgorithmConfiguration();
+        provider.setType("test");
+        yamlAuthorityRuleConfig.setProvider(provider);
+        
when(yamlProxyServerConfig.getRules()).thenReturn(Collections.singletonList(yamlAuthorityRuleConfig));
     }
 
     private Collection<String> getUsers() {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/resources/conf/server.yaml
 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/resources/conf/server.yaml
index 3796403..5052389 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/resources/conf/server.yaml
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/resources/conf/server.yaml
@@ -22,8 +22,12 @@ governance:
     serverLists: localhost:2181
   overwrite: false
 
-users:
-    - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/server.yaml
index 1fabd14..2a8743c 100644
--- 
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/server.yaml
@@ -15,8 +15,12 @@
 # limitations under the License.
 #
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-fixture/src/test/java/org/apache/shardingsphere/test/integration/junit/container/adapter/ShardingSphereAdapterContainer.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-fixture/src/test/java/org/apache/shardingsphere/test/integration/junit/container/adapter/ShardingSphereAdapterContainer.java
index 08c8ec7..1754fb6 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-fixture/src/test/java/org/apache/shardingsphere/test/integration/junit/container/adapter/ShardingSphereAdapterContainer.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-fixture/src/test/java/org/apache/shardingsphere/test/integration/junit/container/adapter/ShardingSphereAdapterContainer.java
@@ -20,8 +20,10 @@ package 
org.apache.shardingsphere.test.integration.junit.container.adapter;
 import com.google.common.io.ByteStreams;
 import lombok.Getter;
 import lombok.SneakyThrows;
+import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUserConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.user.yaml.config.YamlUsersConfigurationConverter;
+import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
 import 
org.apache.shardingsphere.test.integration.junit.container.ShardingSphereContainer;
@@ -29,6 +31,8 @@ import 
org.apache.shardingsphere.test.integration.junit.param.model.Parameterize
 
 import javax.sql.DataSource;
 import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
 
 /**
  * ShardingSphere adapter container.
@@ -53,7 +57,7 @@ public abstract class ShardingSphereAdapterContainer extends 
ShardingSphereConta
                 
ByteStreams.toByteArray(this.getClass().getResourceAsStream("/docker/" + 
parameterizedArray.getScenario() + "/proxy/conf/server.yaml")),
                 YamlProxyServerConfiguration.class
         );
-        return 
YamlUsersConfigurationConverter.convertYamlUserConfiguration(configuration.getUsers())
+        return 
YamlUsersConfigurationConverter.convertYamlUserConfiguration(getUsersFromConfiguration(configuration))
                 .stream()
                 .filter(each -> "root".equals(each.getUsername()))
                 .findFirst()
@@ -66,5 +70,15 @@ public abstract class ShardingSphereAdapterContainer extends 
ShardingSphereConta
      * @return DataSource
      */
     public abstract DataSource getDataSource();
+
+    private Collection<String> getUsersFromConfiguration(final 
YamlProxyServerConfiguration serverConfig) {
+        for (YamlRuleConfiguration config : serverConfig.getRules()) {
+            if (config instanceof YamlAuthorityRuleConfiguration) {
+                YamlAuthorityRuleConfiguration authorityRuleConfig = 
(YamlAuthorityRuleConfiguration) config;
+                return authorityRuleConfig.getUsers();
+            }
+        }
+        return Collections.emptyList();
+    }
     
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
index 24fd1ee..8443347 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/dql/GeneralDQLIT.java
@@ -45,7 +45,7 @@ import static org.junit.Assert.assertTrue;
 public final class GeneralDQLIT extends BaseDQLIT {
     
     @ClassRule
-    public static ComposeManager composeManager = new 
ComposeManager("GeneralDQLIT");
+    public static ComposeManager composeMaYamlProxyServerConfigurationnager = 
new ComposeManager("GeneralDQLIT");
     
     public GeneralDQLIT(final AssertionParameterizedArray parameter) {
         super(parameter);
@@ -55,7 +55,7 @@ public final class GeneralDQLIT extends BaseDQLIT {
     public static Collection<ParameterizedArray> getParameters() {
         return 
ParameterizedArrayFactory.getAssertionParameterized(SQLCommandType.DQL)
                 .stream()
-                .peek(each -> 
each.setCompose(composeManager.getOrCreateCompose(each)))
+                .peek(each -> 
each.setCompose(composeMaYamlProxyServerConfigurationnager.getOrCreateCompose(each)))
                 .collect(Collectors.toList());
     }
     
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/encrypt/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/encrypt/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/encrypt/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/encrypt/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/readwrite_splitting/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/readwrite_splitting/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/readwrite_splitting/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/readwrite_splitting/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/sharding_governance/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/sharding_governance/proxy/conf/server.yaml
index 79827b6..f4af299 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/sharding_governance/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/sharding_governance/proxy/conf/server.yaml
@@ -27,8 +27,12 @@ governance:
       operationTimeoutMilliseconds: 500
   overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/proxy/conf/server.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/proxy/conf/server.yaml
index 071d334..6bf0ab3 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/proxy/conf/server.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/proxy/conf/server.yaml
@@ -27,8 +27,12 @@
 #      operationTimeoutMilliseconds: 500
 #  overwrite: true
 
-users:
-  - root@:root
+rules:
+  - !AUTHORITY
+    users:
+      - root@:root
+    provider:
+      type: NATIVE
 
 props:
   max-connections-size-per-query: 1

Reply via email to