mysql授权localhost&%区别及一直授权错误解决办法(安装openstack有感)

首先还是附上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

日志出现了让人头大的权限错误:

这个错误估计困扰过很多安装openstack的人,至少我从openstack e版到现在juno版本,都经常会报这种无厘头错误,

显然这个一看就是权限错误,一般我会采用直接将keystone。conf的connection
= mysql://keystone:KEYSTONE_DBPASS@controller/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终于解决。(原谅我小小的完美偏执综合征,不解决心理就不爽,就算能规避也还是不爽,不过最后还是解决了,给自己赞一个。)

时间: 2024-10-17 23:24:22

mysql授权localhost&%区别及一直授权错误解决办法(安装openstack有感)的相关文章

mysql ERROR 1045 和2058时(28000): 错误解决办法

mysql ERROR 1045 (28000): 错误解决办法 听语音 | 浏览:54286 | 更新:2018-02-23 14:34 | 标签:mysql 1 2 3 4 5 6 7 分步阅读 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (usin

mysql登录时,ERROR 1045 (28000): 错误解决办法

错误问题的描述: ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES) windows下,以上两个错误的解决方法 解决方法: 1.找到配置文件my.ini  ,然后将其打开,可以选择用NotePadd++打开 2.打开后

安装mysql后连接出错(错误:Access denied for user 'root'@'localhost' (using password: YES)")的解决办法

前几天下载了mysql5.7正常安装后,用navicat for mysql连接时提示"Access denied for user 'root'@'localhost' (using password: YES)""错误信息,因为第一次安装时未添加用户,所以卸载一次又重新添加了用户和密码安装后打开依然报错,借鉴了网上的一些方法,然后用自己的方法实现了连接. 解决方法: 1.打开mysql Command Line Client,输入安装mysql时设置的密码,出现如下界面:

mysql Access denied for user [email protected]错误解决方法总结(转)

mysql Access denied for user [email protected]错误解决方法总结(转) mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下. 错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES) 解决办法是重新设置root用户密码,

2013 - Lost connection to MySQL server at 'reading initial communication packet' 错误解决

一.操作与状态 当使用MySQL客户端连接localhost本地数据库时,连接不上,报错.(使用Tomcat连接数据库时可以连接上,但需要很长的请求时间.) 二.原因与解决办法 关于这个问题网上的解决方法基本个不相同,并且答案也比较少,最后发现是由于自己手欠在电脑管家的"网络优化中"禁用了MySQL程序的网络,恢复连接即可. 2013 - Lost connection to MySQL server at 'reading initial communication packet'

MySQL 1366错误解决办法

MySQL 1366错误大致描述如下 SQL Error: 1366: Incorrect string value: "xE8xAFxA6xE7xBBx86…" for column "address" at row 1 解决办法:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同:不相同则会引发MySQL1366错误. 修改MySQL该字段的字符集与整理规则即可.假设数据表为phplamp, SQL语句的字符集为utf8,出错的字段为add

Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

这两天在进行网站搬家,这次网站搬家采用直接打包mysql数据库和网页文件的形式进行迁移,上传好mysql data目录里面的网站数据库至VPS上mysql存放数据库的目录里面,解压就行.我的VPS存放数据库的路径是 /usr/local/mysql/var. 上传好网站数据,解压,配置好数据库链接参数就行,网站就能正常连接上了,我本以为这已 经是顺利迁移完成了,但后来操作的时候,发现只能读取数据库的内容,不能更改写入任何信息,提示#1036 – Table ‘* ‘ is read only (

MySQL ERROR 1005: Can't create table (errno: 150)的错误解决办法

在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束. 出现问题的大致情况 1.外键的引用类型不一样,主键是int外键是char 2.找不到主表中 引用的列 3.主键和外键的字符编码不一致 4.还有要建立外键的话,要先建立索引.没有建立索引也会出错. MySQL ERROR 1005: Can't create table (errno: 150)的错误解决办法

Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法

使用了Amazon AWS EC2免费云空间,数据库实例采用Amazon RDS.原来在Windows Server上有一个存在大量数据的MySQL数据库.现在需要在Amazon RDS上还原这个MySQL数据库,勾掉Views(因为它会要求SUPER权限,而Master User无此权限,毕竟是托管的RDS),只留下Tables,如下图(使用Navicat): 图1:勾掉Views,因为RDS上的Masteruser无Super权限,无法还原Views对象 但在还原时,仍然出现如下的错误信息: