Давно я не пользовался MySQL.
У меня есть несколько сайтов, использующих WordPress с использованием переменной подключения, например:
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'patbrt_cv');
define ('DB_USER', 'patbrt_cv_user');
define ('DB_PASS', 'password');
Сегодня мне нужно импортировать одну из моих таблиц (экспортированных из PhpMyAdmin) на мой локальный сервер (с помощью EasyPHP) для тестирования, и для этого мне нужно использовать файл конфигурации phpmyadmin («config.inc.php»)
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
Но где определяется «имя базы данных» (настройка DB_NAME)? Как установить его на локальном сервере баз данных (EasyPHP)? Я не могу найти эту настройку в файле «config.inc.php» (используется phpmyadmin).
Мне нужен этот параметр для импорта одной из моих таблиц с одного из моих веб-сайтов в EasyPHP с использованием BigDump (успешно установлен), чтобы избежать этой ошибки, которую я сейчас получаю сразу после попытки импорта базы данных.
CREATE DATABASE IF NOT EXISTS `patbrt_cv` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
MySQL: Access denied for user ''@'localhost' to database 'patbrt_cv'
Если ваш php-клиент уже вошел в MySQL, запрос USE mydatabase;
возвращает вас в базу данных, которую вы хотите использовать.
Вы также можете сделать выбор базы данных в строке подключения MySQL.
Когда вы входите в MySQL, вы используете набор учетных данных (имя хоста / имя пользователя / пароль). Этот набор учетных данных должен быть GRANT
разрешение на доступ к базе данных, которую вы хотите использовать. В вашем примере у вас есть строки нулевой длины для имени пользователя и пароля — как показано здесь:
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
Ваше сообщение об ошибке говорит это:
MySQL: для пользователя » @ ‘localhost’ запрещен доступ к базе данных ‘patbrt_cv’
Это означает, что ваша php-программа успешно вошла на ваш MySQL сервер с комбинацией учетных данных origin / username / password localhost / (empty) / (empty)
но эта конкретная комбинация учетных данных не имеет права использовать базу данных patbrt_cv
или, возможно, не имеет права получать список баз данных, уже присутствующих на сервере.
Вы можете попробовать имя пользователя root
и любой пароль root установлен на вашем локальном сервере MySQL. Это даст вашей php-программе доступ к серверу для выполнения таких действий, как выдача команды. SHOW DATABASES;
чтобы получить список баз данных, уже присутствующих на вашем сервере.
EasyPHP — это пакет Windows. Это означает, что вы можете использовать один из превосходных клиентов Windows MySQL. Скачайте и установите клиент, такой как HeidiSQL (https://www.heidisql.com/download.php) и использовать его для просмотра содержимого вашей локальной системы MySQL. Он также имеет систему для создания учетных данных пользователей и предоставления им привилегий (Tools / User Manager)
Вы спросите, почему это дело с полномочиями так сложно? Потому что MySQL спроектирован как общая многопользовательская система, в которой разные пользователи используют разные базы данных, не зная о существовании друг друга, и, конечно, не имея возможности видеть данные друг друга. Вы не используете эти функции для нескольких арендаторов, когда запускаете MySQL на своем компьютере, но они все еще присутствуют.
Других решений пока нет …