目录
本文是在centos7下配置 keycloak-11.0.2使用mariadb数据库,keycloak-11.0.2以standalone模式运行
环境
虚机:CentOS Linux release 7.9.2009 (Core) 虚机环境
数据库:MariaDB Ver 15.1 Distrib 5.5.68-MariaDB
数据库的安装和配置
安装mariadb:
yum install mariadb mariadb-server
配置数据库的shell script:
MYSQL_DBPASS=mysql
cat >/etc/my.cnf.d/openstack.cnf<<EOF
[mysqld]
bind-address = 192.168.78.134default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
systemctl enable mariadb.service
systemctl start mariadb.servicemysql_secure_installation <<EOF
y
$MYSQL_DBPASS
$MYSQL_DBPASS
y
y
y
y
EOF
其中bind-address的配置要替换成mariadb数据库所在机器的IP地址,script中的MYSQL_DBPASS是设置的数据库密码
创建数据库keycloak:
CREATE DATABASE `keycloak` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
给root用户赋予使用mysql密码访问keycloak database的权限:
GRANT ALL PRIVILEGES ON keycloak.* to root@’%’ IDENTIFIED BY ‘mysql’;
keycloak-11.0.2的下载和配置
从github上下载:
将keycloak-11.0.2.tar.gz解压:
tar zxvf keycloak-11.0.2.tar.gz
得到keycloak-11.0.2的文件夹,文件夹的内容如下:
[root@localhost keycloak-11.0.2]# ls
bin docs domain jboss-modules.jar LICENSE.txt modules standalone themes version.txt welcome-content
配置standalone.xml
修改keycloak-11.0.2/standalone/configuration/standalone.xml文件,注释掉下面的部分:
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"
statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
<connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
<pool>
<max-pool-size>100</max-pool-size>
</pool>
</datasource>
通过在段前后分别加<!--和-->来注释掉上面的xml内容,示例如下:
如果不想注释掉上面的内容,也可以直接删除掉。
在standalone.xml文件的<datasources>标签内,增加以下内容,(注意:数据库IP地址修改成自己的IP地址,数据库的用户名和密码也要修改成自己的):
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"
>
<connection-url>jdbc:mariadb://192.168.78.134:3306/keycloak?autoReconnect=true</connection-url>
<driver>mariadb</driver>
<security>
<user-name>root</user-name>
<password>mysql</password>
</security>
</datasource>
实际上,注释掉的内容是不使用数据库的配置,而增加的内容是使用mariadb数据库的配置,当然还需要在<drivers>标签内增加下面的内容:
<driver name="mariadb" module="org.mariadb">
<xa-datasource-class>org.mariadb.jdbc.MariaDbDataSource</xa-datasource-class>
</driver>
将下面的IP地址修改为0.0.0.0,否则外部无法访问,只能本机能访问
此时standalone.xml已经配置完成。
keycloak使用mariadb的配置
数据库相关的配置,在下面的文件夹创建目录mariadb/main
keycloak-11.0.2/modules/system/layers/base/org
目录创建完成,如下:
keycloak-11.0.2/modules/system/layers/base/org/mariadb/main
下载mariadb-java-client-2.7.1.jar文件,下载链接:
https://dlm.mariadb.com/1484707/Connectors/java/connector-java-2.7.1/mariadb-java-client-2.7.1.jar
然后将mariadb-java-client-2.7.1.jar放在目录:keycloak-11.0.2/modules/system/layers/base/org/mariadb/main中,并在这个目录下创建module.xml文件,文件内容如下:
<module xmlns="urn:jboss:module:1.5" name="org.mariadb">
<resources>
<resource-root path="mariadb-java-client-2.7.1.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
此时配置完成
启动keycloak
在keycloak-11.0.2/bin目录下有standalone.sh,执行这个脚本文件:
./standalone.sh
keycloak初始化配置
配置外网地址访问之后,如果是第一次启动keycloak,从外网访问时会跳转至登录页面而不会出现首次使用的管理员注册页面,从而无法登陆控制台。如下图所示不能设置用户,需要登录http://localhost:8080/auth,但是由于是外部登录的不是在keycloak所在的本机,所以无法f访问http://localhost:8080/auth,也就不能 initial admin user
解决方法有两种:
方法一:
可在keycloak-11.0.2/bin目录中找到add-user-keycloak.sh,运行如下命令新建管理员用户:
add-user-keycloak.sh -r master -u admin -p admin
keycloak默认存在一个master的realm,故-r参数应为master,执行命令后需要重启keycloak。此时便可以从外网以admin账户登录控制台了。
方法二:
安装图形化和firefox
yum -y install firefox
yum groupinstall "X Window System"
yum groupinstall "Gnome"
然后到vmware上的centos虚拟机上,在命令行执行startx就开启了图形界面,打开浏览器访问:http://localhost:8080/auth,正常打开初始化设置页面,开始initial admin user