12

我做了以下步骤在 Ubuntu 中使用 MySQL:

sudo aptitude install php5-mysql mysql-server
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysql -u root mysql

更改root密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('SecurePassword') WHERE
User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT

修改/etc/mysql/my.cnf:

[client]
user=root
password=SecurePassword
[mysqld]
...
default-time-zone = '+0:00'

然后:

sudo service mysql start
mysql -u root
mysql> SHOW GRANTS FOR root@localhost
+--------------------------------------------------------------------------------------------------+
 | Grants for root@localhost | 
+--------------------------------------------------------------------------------------------------+
 | GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[here is the Securepassword]' |
 +-------------------------------------------------------------------------------------------------+
 1 row in set (0.00 sec) 

mysql>
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'  WITH GRANT OPTION;

我收到一个错误:

用户'root'@'localhost'的访问被拒绝(使用密码:YES)

4

3 回答 3

2

你所做的绝对正确,但我想它不工作的一个小原因。

identified by password当你要授予这样的权限时,你应该使用:

mysql> GRANT ALL PRIVILEGES ONE `*`.`*` TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*A4B6157319038724E3560894F7F932C8886EBFCF' WITH GRANT OPTION;
于 2013-11-27T09:18:13.893 回答
0

如果您收到这样的错误消息:

Warning: mysql_connect(): Access denied for user: ....

那么问题是你的应用程序不能access the database。这可能有几个原因:

首先,确保您的db-config.php(应用程序的连接文件)中的数据库设置正确,特别是您的 MySQL 用户的name和,您的名称,以及您的 MySQL 服务器的名称。passworddatabase

如果您正在运行自己的服务器,您可能需要为您的 MySQL 用户提供适当的权限。以 MySQL root 用户身份登录 MySQL 并发出以下命令:

GRANT ALL PRIVILEGES ON database_name TO user@host IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
于 2014-12-18T06:14:44.277 回答
0

默认情况下,像 Ubuntu 这样的系统更喜欢使用auth_socket插件作为 root 帐户。它将尝试通过比较您在数据库中的用户名和发出 mysql 请求的进程来进行身份验证;它在这里描述

socket插件检查socket用户名(操作系统用户名)是否与客户端程序指定给服务器的MySQL用户名匹配,只有匹配时才允许连接。

相反,您可能希望返回mysql_native_password,这将需要用户/密码进行身份验证。

关于实现这一点的方法,我建议您检查一下

于 2019-06-08T17:44:42.443 回答