今天是真的倒霉的一天,本来学springcloud的时候,连接的数据库我想使用阿里云的远程数据库,但死活连接不上,离谱。于是,我开始进行分析:
首先:sqlyog等工具可以连接成功,但是idea使用springboot配置连接不行
分析:sqlyog是通过连接云主机,然后通过localhost去连接的,springboot则是通过你本地的电脑的ip地址去连接的,因此,区别就是一个ip地址的不同。其次,如果这个没问题的话,那出现的问题只有springboot配置,jar冲突啥的。于是,我去阿里云查看对远程ip地址的的访问支持。这里后面我总结两点:1.数据的root用户的访问权限,2.mysql的配置文件
针对第一点:我们进入user表,对root用户进行赋予权限即可
1 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';例如:
1 GRANT ALL ON *.* TO 'zhangsan'@'localhost';表示给张三用户授予所有权限,在任意数据库任意表上
针对第二点:修改/etc目录或者/etc/mysql目录下的my. cnf,将这段代码:
1 #bind-address=127.0.0.1注释掉,或者将其值改成0.0.0.0,表示允许任何ip主机访问此数据库。如果还是不行?添加这段代码
1 skip-name-resolve注意:这两句代码都是在[mysqld]配置下面
但是,我这两个问题都排查了,还是不行,也可能是最后我没去修改root的来源ip访问权限问题,我只是去添加了root的来源ip这一字段。此外,我还删了三个root字段,在最后。于是,悲剧来了。误删了root用户的数据库还能挽救吗?
这里,我有一个问题先贴出来:我为什么会删root账号呢,因为一个数据有四个root账号,我查了资料好像是为了更方便的控制访问权限,我在最后删除了其他三个root后,留下的ip地址为%,即通配符所有的ip地址。但我删了三个root后,后面居然登录不上两道mysql。
关于之后的理解:我删了三个root后,没有给剩下的一个root配置权限管理。有大佬看了文章,可以指点迷津给我一二,感激不尽。
这里,我有一个问题先贴出来:我为什么会删root账号呢,因为一个数据有四个root账号,我查了资料好像是为了更方便的控制访问权限,我在最后删除了其他三个root后,留下的ip地址为%,即通配符所有的ip地址。但我删了三个root后,后面居然登录不上两道mysql。
关于之后的理解:我删了三个root后,没有给剩下的一个root配置权限管理。有大佬看了文章,可以指点迷津给我一二,感激不尽。
那么现在问题如何解决?既然是删了root,重新创建回来就好了,想要重新创建就必须进入mysql,这里直接使用安全命令,不用输入密码进入。
123 service mysqld stop #关闭数据库mysqld_safe --skip-grant-tables --skip-networking & #安全模式开启免密码登录登录成功后,创建root表,设置密码,设置权限等
1 insert into user(user,host,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('123'),'','','','');
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 update user set`Select_priv` = 'Y',`Insert_priv` = 'Y',`Update_priv` = 'Y',`Delete_priv` = 'Y',`Create_priv` = 'Y',`Drop_priv` = 'Y',`Reload_priv` = 'Y',`Shutdown_priv` = 'Y',`Process_priv` = 'Y',`File_priv` = 'Y',`Grant_priv` = 'Y',`References_priv` = 'Y',`Index_priv` = 'Y',`Alter_priv` = 'Y',`Show_db_priv` = 'Y',`Super_priv` = 'Y',`Create_tmp_table_priv` = 'Y',`Lock_tables_priv` = 'Y',`Execute_priv` = 'Y',`Repl_slave_priv` = 'Y',`Repl_client_priv` = 'Y',`Create_view_priv` = 'Y',`Show_view_priv` = 'Y',`Create_routine_priv` = 'Y',`Alter_routine_priv` = 'Y',`Create_user_priv` = 'Y',`Event_priv` = 'Y',`Trigger_priv` = 'Y',`Create_tablespace_priv` = 'Y'where user='root' and host='localhost'每次授权后记得加上这语句
1 flush privileges重启mysql
123 service mysqld restar #重启mysqlservice mysqld stop #停止mysqlservice mysqld start #启动mysql
以下是一些参考资料
重点来了,忙活了一下午加一个晚上,springboot远程连接阿里数据库没连上,现在root用户权限还弄坏了。总结:没事别找事,本来看视频连不上远程,就可以放手直接连接本地的,结果浪费了一个下午,一个晚上,以后绝不会有下次了!草