前言:
眼前看官们对“mysql长连接跨网段问题”可能比较关切,朋友们都需要分析一些“mysql长连接跨网段问题”的相关知识。那么小编也在网上汇集了一些关于“mysql长连接跨网段问题””的相关资讯,希望同学们能喜欢,大家一起来了解一下吧!问题还原
我们的甲方爸爸遇到了一点技术的问题,具体如下
有一个比较大的sql文件,sql文件是逻辑备份出来的。 导入的过程中出现了
ERROR 1044(42000):Access denied for user ‘username’@‘%’ to database ‘dbname’
应该是权限有问题?
甲方说的是,他们的普通用户只有select,create,insert,update,delete,alter,drop ,这些权限。还要求我们也给相同的权限测试,会不会出现这种情况?
当然是会出现的,因为谁知道是哪位普通用户导出来之前拥有什么权限,需要的权限肯定不止这些,后面的测试也证明绝非不止这些权限。
我的思考
我想,既然谁也不知道这个普通用户生前有什么什么权限才会导出这个SQL文件,不妨我们先给这个普通用户所有的权限,等导入完成之后再 取消不想给的权限。 或者直接用root导入,假若有权限的话。 要是不知道普通用户生前有什么权限,还控制普通用户的权限,还要把数据丝毫不差的导入进去,那不是巧妇难为无米之炊吗。
该怎么知道普通用户之前拥有什么权限
看下面
查看普通用户有什么权限
先查看普通用户分配了什么网段?
mysql> select user,host from mysql.user;
+------------------+-------------+
| user | host |
+------------------+-------------+
| back | % |
| root | % |
| shop | % |
| slave | % |
| tatata | % |
| zyd1 | % |
| jumpserver | 127.0.0.1 |
| deployop | 192.168.1.% |
| debian-sys-maint | localhost |
再看该网段的某个普通用户具体拥有什么权限
mysql> show grants for deployop@'192.168.1.%' ;
+------------------------------------------------------------------------------------------------------------------+
| Grants for deployop@192.168.1.% |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'deployop'@'192.168.1.%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, LOCK TABLES ON `dbname`.* TO 'deployop'@'192.168.1.%' |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
可以看出该用户拥有SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, LOCK TABLES等权限对于dbname库
敲黑板!
用户在不同的区段可以拥有不同的密码及所授予的权限
MYSQL导入方式
我所了解的导入有两种方式,不确定有什么稀奇古怪的导入方式 导入方式1:
进入mysql,
mysql -u user -p
use dbname;
source /path/***.sql ;
导入方式2:
命令行执行
mysql -u user -p dbname < /path/***.sql
前者导入更快,兼容性理论上来说更强,会刷屏,时间慢后者导入快,不刷屏,安安静静的。
取消权限?
mysql> REVOKE INSERT ,UPDATE ON dbname.* FROM deployop@'192.168.1.%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
再看现在是什么权限?
mysql> show grants for deployop@'192.168.1.%' ;
+--------------------------------------------------------------------------------------------------+
| Grants for deployop@192.168.1.% |
+--------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'deployop'@'192.168.1.%' |
| GRANT SELECT, DELETE, CREATE, DROP, ALTER, LOCK TABLES ON `dbname`.* TO 'deployop'@'192.168.1.%' |
+--------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
insert 和 update 就没了
依此类推
总结
SQL文件在导入时使用的用户,也应该具有和当时导出这些SQL文件用户所具有的权限,缺一不可。
End
标签: #mysql长连接跨网段问题 #为什么数据库导入数据会查不到文件 #数据库导入不进去怎么回事 #为什么数据库导不进去