keystone的mysql无法进入,keystone同步时无法连接数据库的失败解决方法

当尝试使用keystone-manage db_sync同步数据库时遇到连接错误。问题源于字符集配置和MySQL远程访问限制。解决方法包括:修改MySQL配置文件,将utf8mb4改为utf8,允许远程访问,删除并重新创建keystone数据库,最后成功执行数据库同步。
摘要由CSDN通过智能技术生成

问题:

root@swift:/etc/mysql/mariadb.conf.d# su -s /bin/sh -c "keystone-manage db_sync" keystone2017-05-17 21:38:28.105 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 10 attempts left.2017-05-17 21:38:38.107 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 9 attempts left.2017-05-17 21:38:48.117 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 8 attempts left.2017-05-17 21:38:58.124 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 7 attempts left.2017-05-17 21:39:08.130 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 6 attempts left.2017-05-17 21:39:18.138 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 5 attempts left.2017-05-17 21:39:28.144 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 4 attempts left.2017-05-17 21:39:38.151 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 3 attempts left.2017-05-17 21:39:48.158 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 2 attempts left.2017-05-17 21:39:58.167 5553 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 1 attempts left.2017-05-17 21:40:08.171 5553 CRITICAL keystone [-] DBConnectionError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'swift' ([Errno 111] Connection refused)")2017-05-17 21:40:08.171 5553 ERROR keystone Traceback (most recent call last):2017-05-17 21:40:08.171 5553 ERROR keystone  File "/usr/bin/keystone-manage", line 10, in2017-05-17 21:40:08.171 5553 ERROR keystone    sys.exit(main())2017-05-17 21:40:08.171 5553 ERROR keystone  File "/usr/lib/python2.7/dist-packages/keystone/cmd/manage.py", line 47, in main2017-05-17 21:40:08.171 5553 ERROR keystone    cli.main(argv=sys.argv, config_files=config_files)2017-05-17 21:40:08.171 5553 ERROR keystone  File "/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py", line 1024, in main2017-05-17 21:40:08.171 5553 ERROR keystone    CONF.command.cmd_class.main()2017-05-17 21:40:08.171 5553 ERROR keystone  File "/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py", line 403, in main2017-05-17 21:40:08.171 5553 ERROR keystone    migration_helpers.sync_database_to_version(extension, version)2017-05-17 21:40:08.171 5553 ERROR keystone  File "/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py", line 210, in sync_database_to_version2017-05-17 21:40:08.171 5553 ERROR keystone    _sync_common_repo(vers

Keystone是一个身份服务组件,它是OpenStack身份服务的一个实现,用来管理用户和服务的认证信息。初始化Keystone数据库通常涉及以下几个步骤: 1. 创建数据库和用户:首先需要在数据库服务器上创建一个专门的数据库以及一个拥有相应权限的用户。这可以通过数据库管理工具或命令行完成。例如,使用MySQL作为数据库,可以通过以下命令创建: ```sql CREATE DATABASE keystone; CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'; FLUSH PRIVILEGES; ``` 在这里,`keystone` 是数据库的名字,`password` 是设置的数据库用户密码。请根据实际环境替换为正确的用户名、数据库名和密码。 2. 初始化数据库:使用Keystone提供的命令或脚本初始化数据库结构。这通常通过运行Keystone提供的数据库迁移脚本来完成,该脚本会根据Keystone的版本创建必要的表和索引。 ```bash keystone-manage db_sync ``` 这个命令会同步Keystone的数据库模式,确保所有的表和关系都已经创建。 3. 配置Keystone数据库连接:在Keystone的配置文件中设置数据库连接信息。这通常位于 `/etc/keystone/keystone.conf` 文件中。你需要配置数据库驱动、数据库名称、用户、密码以及主机等信息。 ```ini [database] ... connection = mysql+pymysql://keystone:password@localhost/keystone ``` 在这个例子中,`mysql+pymysql` 是数据库驱动,`keystone` 和 `password` 是数据库用户和密码,`localhost` 是数据库服务器的地址,`keystone` 是数据库的名称。 4. 创建初始数据:为了能够开始使用Keystone,你可能需要创建一些初始数据,比如默认的域、项目、用户和角色。这通常可以通过运行 `keystone-manage bootstrap` 命令来完成。 ```bash keystone-manage bootstrap --bootstrap-password password --bootstrap-username admin --bootstrap-project-name admin --bootstrap-user-domain default --bootstrap-project-domain default --bootstrap-role admin ``` 在这个命令中,`password` 是管理员用户的密码,其他的参数指定了管理员用户、项目和域的名称。 完成以上步骤后,Keystone的数据库应该已经正确初始化,并且可以开始使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值