OpenStack Devstack Pike创建实例报错:未建立sql_connection参数
解决OpenStack Devstack Pike创建实例时「No sql_connection parameter is established」错误
我来帮你排查这个问题,这个报错本质是Nova服务的数据库连接配置不完整或未生效导致的,结合你提供的nova.conf片段,咱们一步步来解决:
1. 补全api_database的完整连接配置
你提供的api_database项只写了开头,需要补充完整,格式和database项一致,指向nova_api数据库(Devstack默认会创建这个库):
[api_database] connection = mysql+pymysql://root:mypassword@127.0.0.1/nova_api?charset=utf8
确保密码和[database]段里的mypassword完全一致。
2. 检查并配置Nova Cell V2的cell1数据库连接
Pike版本的Nova启用了Cell V2架构,除了nova_cell0,还需要nova_cell1数据库的正确连接:
- 先查看当前cell的配置状态:
重点看nova-manage cell_v2 list_cellscell1的Database Connection列,如果是空的或者显示错误,继续下一步。 - 确认
nova_cell1数据库存在(不存在就创建):# 登录MySQL检查 mysql -u root -p -e "SHOW DATABASES LIKE 'nova_cell1';" # 如果没有输出,创建数据库 mysql -u root -p -e "CREATE DATABASE nova_cell1 CHARACTER SET utf8;" - 更新cell1的数据库连接(替换
<cell1_uuid>为list_cells结果里的cell1 UUID):nova-manage cell_v2 update_cell --cell_uuid <cell1_uuid> --database_connection mysql+pymysql://root:mypassword@127.0.0.1/nova_cell1?charset=utf8
3. 验证数据库访问权限
确保root用户能通过127.0.0.1访问所有Nova相关数据库:
# 测试连接nova_api mysql -u root -p -h 127.0.0.1 nova_api
如果无法登录,需要给root用户授权:
mysql -u root -p -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'mypassword';" mysql -u root -p -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'mypassword';" mysql -u root -p -e "GRANT ALL PRIVILEGES ON nova_cell1.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'mypassword';" # 刷新权限 mysql -u root -p -e "FLUSH PRIVILEGES;"
4. 重启Nova服务并同步数据库
- 重启所有Nova相关服务:
systemctl restart devstack@nova-*.service - 同步API数据库和cell数据库:
# 同步API数据库 nova-manage db sync # 同步cell1数据库 nova-manage cell_v2 sync_cell --cell_uuid <cell1_uuid>
做完这些步骤后,再尝试创建实例,应该就能解决这个报错了。
内容的提问来源于stack exchange,提问作者rawia
相关产品推荐
相关产品推荐

