大家好,又见面了,我是你们的朋友全栈君。
话我就撂这儿了,只要你认真看完,你就能解决。
—
2022年4月20日 阅读量都已经19586次了
重新看了一下这一篇解决方案,感觉写的还是有点冗长的,
一句话总结就是:登录root账户,给你的子账户赋权。
—
困了我一天一夜的问题终于解决了,问题也不知道是怎么产生的,点击“用户”或者修改“information_schema”的值就会提示错误,似乎是因为权限不足,错误入下图。
首先你要知道数据库的用户是怎么回事。每个数据库都有账号密码,连接特定的数据库需要对应的账号密码,这个很容易理解,PHP里的mysqli_connect你们也用的多了。主机上的MYSQL可以有很多个数据库,这个MYSQL有一个root账户,这个账户可以随意操作其他数据库账户的权限。“information_schema”这个数据库需要比较大的权限才能修改,不然只能只读。root账户自然是可以操作“information_schema”的,Event_Scheduler就需要root账户开启。
这里的问题就在于user1的权限不足,我们就需要用root赋予user1更大的权限。
那么root账号是啥,密码又是啥?
(环境说明)我搭建的环境:在自己的台式主机上直接安装的宝塔软件,然后选择的5.5版本的mysql安装。安装的时候会提示输入数据库的密码,这里填入的是root密码。之后会用到,不是从宝塔安装的小伙伴们也别忘了自己mysql的root密码,密码忘了可以重装(或者点下边那个“密码”按钮强制修改)。
这里连接sql_dora数据库用的账号是sql_dora,密码是pwd1.
需要说明的是这个账号,它是没有大权限的。而root这个用户名才是有真正大权限的,它的密码是创建数据库时你输入的那个。
对了,那怎么验证你的root账号的密码是否正确呢?
CMD法(建议跳过,看下一个Navicat法):
1.找到你的MYSQL安装目录
2.打开CMD,输入命令。
代码语言:javascript复制Microsoft Windows [版本 10.0.17134.885]
(c) 2018 Microsoft Corporation。保留所有权利。
//切换到D盘盘符
C:UsersAdministrator>D:
//切换到MYSQL目录下,目录获取方法请看上一步骤
D:>cd D:BtSoftWebSoftmysqlMySQL5.5bin
//用root登陆MYSQL,指令:mysql -hlocalhost -uroot -p密码
D:BtSoftWebSoftmysqlMySQL5.5bin>mysql -hlocalhost -uroot -p123456
//登陆成功后的返回
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 672
Server version: 5.5.54-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
//不清楚这是干啥的(滑稽
mysql> use mysql
Database changed
//输出用户名为sql_dora的信息
mysql> select * from user where user='sql_dora';
----------- ---------- ------------------------------------------- ------------- ------------- ------------- ------------- ------------- ----------- ------------- --------------- -------------- ----------- ------------ ----------------- ------------ ------------ -------------- ------------ ----------------------- ------------------ -------------- ----------------- ------------------ ------------------ ---------------- --------------------- -------------------- ------------------ ------------ -------------- ------------------------ ---------- ------------ ------------- -------------- --------------- ------------- ----------------- ---------------------- -------- -----------------------
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string |
----------- ---------- ------------------------------------------- ------------- ------------- ------------- ------------- ------------- ----------- ------------- --------------- -------------- ----------- ------------ ----------------- ------------ ------------ -------------- ------------ ----------------------- ------------------ -------------- ----------------- ------------------ ------------------ ---------------- --------------------- -------------------- ------------------ ------------ -------------- ------------------------ ---------- ------------ ------------- -------------- --------------- ------------- ----------------- ---------------------- -------- -----------------------
| 127.0.0.1 | sql_dora | *CBC40DD3286B5BBB6F9F3582C7760D52524ABC16 | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL |
----------- ---------- ------------------------------------------- ------------- ------------- ------------- ------------- ------------- ----------- ------------- --------------- -------------- ----------- ------------ ----------------- ------------ ------------ -------------- ------------ ----------------------- ------------------ -------------- ----------------- ------------------ ------------------ ---------------- --------------------- -------------------- ------------------ ------------ -------------- ------------------------ ---------- ------------ ------------- -------------- --------------- ------------- ----------------- ---------------------- -------- -----------------------
1 row in set (0.00 sec)
mysql>
当然,执行到第三步就行了,我们只测试root密码是不是对的。
Navicat法:
如下图,用户名填写root,密码填入,测试连接就行了。(我也是写完CMD法之后突然想起有这么个直接测试的…)
用root账户登录之后我们就获得了最高权限,接下来给我们的sql_dora用户赋权。
下图是点击“用户”就会提示1142错误的默认权限情况。
勾选上Select之后,保存。再打开数据库,以sql_dora之名,你会发现Select错误就不会再出来了!
如果需要其他权限,请适当勾选,权限过多不太好,哪天MYSQL被注入了,drop你的库你就傻眼了。
(最后,最后,最后)
我发现一个很严肃的问题,直接用root账号操作不就好了,干嘛还得麻烦给sql_dora赋权。
等等,好像是有那么个必要的,毕竟PHP连接数据库不能用root啊,风险太高。Navicat私下root还行,上PHP最好还是给小账户赋权一下,用小账户,把风险降到最低。
就写到这里过了,给莫名其妙出了问题的小伙伴们参考参考。经过这么一搞,自己对之前模模糊糊的MYSQL用户机制有了那么个头绪,至少没那么头大了。
看完了我的文章,你的问题应该解决了,点个赞再走呗~
啥?你说啥?你还想关注我?那好吧,我接受了!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186977.html原文链接:https://javaforall.cn