Owncloud 从 SQLite 迁移到 MySQL/MariaDB 时数据库密码错误

Owncloud 从 SQLite 迁移到 MySQL/MariaDB 时数据库密码错误

在 Fedora 系统中,我需要将 Owncloud 的 SQLite 数据库转换为 MySQL/MariaDB 数据库,我开始安装 MySQL:

# systemctl enable mysqld
# systemctl start mysqld
$ mysql_secure_installation

然后

$ mysql -u root -p
  CREATE USER 'owncloud_user'@'localhost' IDENTIFIED BY '12345';
  CREATE DATABASE IF NOT EXISTS owncloud;
  GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud_user'@'localhost' IDENTIFIED BY '12345';

假设 owncloud_user 的密码12345Owncloud 7.0 管理员手册,输入

# php occ db:convert-type --all-apps mysql owncloud_user 127.0.0.1 owncloud

我被提示:

What is the database password?

数据库密码?我只为用户 owncloud_user 创建了密码,因此输入密码12345后出现错误

[PDOException]                                                                                   
SQLSTATE[HY000] [1045] Access denied for user 'owncloud_user'@'localhost' (using password: YES)

附加信息

机器已启用 IPv6

MariaDB [(none)]> SELECT user, host FROM mysql.user;
+---------------+-----------+                                                                                                                                                             
| user          | host      |                                                                                                                                                             
+---------------+-----------+
| root          | 127.0.0.1 |
| root          | ::1       |
| owncloud_user | localhost |
| root          | localhost |
+---------------+-----------+

答案1

您需要从 mysql 数据库中的授权表重新加载权限。您可以使用以下命令执行此操作:

$ mysql -u root -p
  FLUSH PRIVILEGES;
  EXIT;

答案2

您可以尝试指定 127.0.0.1 和/或 ::1 ,像这样

$ mysql -u root -p
  CREATE USER 'owncloud_user'@'127.0.0.1' IDENTIFIED BY '12345';
  CREATE USER 'owncloud_user'@'::1' IDENTIFIED BY '12345';
  CREATE DATABASE IF NOT EXISTS owncloud;
  GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud_user'@'127.0.0.1';
  GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud_user'@'::1';

原因是这样的:http://dev.mysql.com/doc/refman/5.0/en/connecting.html

在 Unix 上,MySQL 程序会特殊处理主机名 localhost,与其他基于网络的程序相比,这种方式可能与您预期的不同。对于与 localhost 的连接,MySQL 程序会尝试使用 Unix 套接字文件连接到本地服务器。

相关内容