前言
今天搞了个亚马逊的免费主机(免费使用12个月),我之前一直是完centos的,但是亚马逊的免费套餐只有ubuntu18.04和Windows,还有一些我不太熟悉的操作系统(如图),有兴趣的可以期待我下篇文章,一起去撸一个免费的主机玩玩。
![](https://img.haomeiwen.com/i10311999/52a89f5189ada4c7.jpg)
问题
安装了phpmyadmin之后,进行登录,发现root账户不能登录。这种情况在centos下貌似是不存在的。。
![](https://img.haomeiwen.com/i10311999/f91b6281753afdf9.jpg)
错误代码如下:
ERROR 1698: Access denied for user 'root'@'localhost'
但是在终端中使用命令
sudo mysql -uroot -p
登录是没有任何问题的。
我不清楚这是问什么,不过我猜想可能是phpmyadmin在ubuntu18.04上的一个特例吧,安装phpmyadmin的时候会多一个步骤,创建phpmyadmin的登录用户。但是这个用户明显是一点屌用都没有啊,只能管理phpmyadmin这一个数据库,我要你有何用~
解决
找度娘求救以后,看到这么一句话:MySQL 改变了安全模式:现在MySQL root登录需要一个sudo(而密码仍然可以是空白的)。也就是说,phpMyAdmin将无法使用根凭证(就是自身禁止了root用户的登录行为)。
方法一:
最简单(最安全)的解决方案将创建一个非root用户并授予所需的权限。
1.链接数据库
sudo mysql -uroot -p
2. 创建一个用来赋予权限的账户(例如 rootdb)
CREATE USER 'rootdb'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'rootdb'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3.更新phpMyAdmin配置
打开文件/etc/dbconfig-common/phpmyadmin.conf
vim /etc/dbconfig-common/phpmyadmin.conf
4.修改你的配置文件内容
# dbc_dbuser: database user
# the name of the user who we will use to connect to the database.
dbc_dbuser='rootdb'
# dbc_dbpass: database user password
# the password to use with the above username when connecting
# to a database, if one is required
dbc_dbpass='123456'
解决方法二:
简单粗暴,把原本已创建好的phpmyadmin账户赋予所有权限,执行命令
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'yourpasswd';
FLUSH PRIVILEGES;
OK了,使用刚才的账号密码登录就可以看到所有数据库了
网友评论