来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 首先还是附上openstack文档,以此作为例子讲解为什么赋权了%而却一直报权限错误!mysql -u root -pyunjisuan CREATE DATABASE keystone;GRANT ALL PRIVILEGES ON keystone * TO...
首先还是附上openstack文档,以此作为例子讲解为什么赋权了%而却一直报权限错误!
mysql -u root -pyunjisuan CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; 正确理解,这里对用了%则代表了所有的host都能远程访问该mysql。但是查询mysql官方文档有说明,%并不包括localhost。这样呢,因此上述,对localhost和%都进行了赋权。 接下来看下hosts文件: vim /etc/hosts 配置好keystone.conf文件: 查看keystone日志: tailf /var/log/keystone/keystone.log 执行同步数据库命令: su -s /bin/sh -c "keystone-manage db_sync" keystone 日志出现了让人头大的权限错误:
connection = mysql://keystone:KEYSTONE_DBPASS@192.168.38.100/keystone即可解决。但是实际上我们授权了%应该是所有host都应该能访问才对。那么问题出在哪里呢? 通过查询了mysql官网资料说的是配置%那么其他所有host访问都有权限,可以上述报错不就是告诉我,没有权限么。 此处多说一句,此处配置%远程其他host有权限访问,那么在mysql的配置文件中 /etc/my.cnf,也需要做一些配置,将bind_address=0.0.0.0或者直接屏蔽掉此项,更多请自行查找资料。 继续回来将如何解决上述报错问题,回过去看看/etc/hosts文件: 明明配置了controller节点了的,尝试将该项移个位置,奇迹出现: 再上述127.0.0.1 localhost后面增加controller。至于放在127.0.0.1 localhost这一行数据代表什么意思,自己百度问去。只说一句是controller是localhost的别名alias。 继续执行命令:su -s /bin/sh -c "keystone-manage db_sync” keystone 查看日志: 发现成功。其实这里的controller是localhost的别名,因为之前对localhost授权了,所以controller也即授权了。但是第一种/etc/hosts写法仅仅就是的DNS功能,所以报权限错误。 坑:此问题,困扰了好几年,最近安装juno版本时候有报错,发誓一定要解决,花了两天各种google、baidu终于解决。(原谅我小小的完美偏执综合征,不解决心理就不爽,就算能规避也还是不爽,不过最后还是解决了,给自己赞一个。) |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com