lam*_*2sk 42 php mysql login root
我刚刚安装了Ubuntu 16.04并在其上安装了Web服务器.一切运作良好,但我无法访问数据库.我在互联网上尝试了一切,也在这里,但没有任何作用......即使我创建新用户并授予所有权限,我也无法创建数据库:(在PHP中我得到'这个错误:
SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)
当我尝试登录终端时,它可以工作,但在PHP和phpmyadmin中没有.请帮忙.
PHP代码:
protected $host = '127.0.0.1';
protected $db = 'dbname';
protected $name = 'root';
protected $pass = 'root';
protected $conn;
private static $settings = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
);
public function __construct() {
try {
$this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->name, $this->pass, self::$settings);
} catch (PDOException $e) {
echo $e->getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*ris 92
事实证明,你不能再使用root5.7中的用户而不成为sudoer.这意味着你不能再运行mysql -u root了,sudo mysql -u root而是必须做.
这也意味着如果您root在GUI(或任何非命令行应用程序)中使用用户,它将不再起作用.要使其工作,您必须创建具有所需权限的新用户并使用它.
有关详细信息,请参阅此答案.
leo*_*old 68
这些步骤适用于使用Ubuntu 16.04,Apache 2.4,MariaDB,PDO的多个系统
以root身份登录MYSQL
mysql -u root
Run Code Online (Sandbox Code Playgroud)授予权限.给新用户执行:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)绑定到所有地址:
最简单的方法是在/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf文件中注释掉这一行 ,具体取决于你是什么系统运行:
GRANT ALL PRIVILEGES ON `%`.* TO 'newuser'@'localhost';
Run Code Online (Sandbox Code Playgroud)退出mysql并重启mysql
#bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)默认情况下,它仅绑定到localhost,但如果您对该行进行注释,则它会绑定到它找到的所有接口.注释掉该行等同于bind-address =*.
要检查以root身份执行的mysql服务的绑定:
exit
service mysql restart
Run Code Online (Sandbox Code Playgroud)
小智 30
也许有点晚了,但我发现这个答案在网上看.它可以帮助其他人解决同样的问题.
$sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q
Run Code Online (Sandbox Code Playgroud)
现在您应该能够在phpmyadmin中以root用户身份登录.
(在这里找到.)
小智 12
更改用户或删除用户并再次创建效果非常好。
DROP USER root@localhost;
CREATE USER root@localhost IDENTIFIED BY 'root_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
小智 7
简而言之,在 MariaDB 上
1) sudo mysql -u root;
2) use mysql;
3) UPDATE mysql.user SET plugin = 'mysql_native_password',
Password = PASSWORD('pass1234') WHERE User = 'root';
4) FLUSH PRIVILEGES;
5) exit;
Run Code Online (Sandbox Code Playgroud)
To create user for phpMyAdmin :
sudo mysql -p -u root
Run Code Online (Sandbox Code Playgroud)
Now you can add a new MySQL user with the username of your choice.
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
Run Code Online (Sandbox Code Playgroud)
And finally grant superuser privileges to the user you just created.
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)
For any question, please leave a comment
| 归档时间: |
|
| 查看次数: |
176480 次 |
| 最近记录: |