Я работаю над веб-проектом CodeIgniter, который размещается в Azure, и я решил использовать MySQL на виртуальной машине под управлением Windows Server 2012 R2 в Azure, следуя этому руководству, так как оно показалось лучшим решением. https://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-mysql-windows-server-2008r2/
У меня все настроено, а также удалось подключить phpmyadmin, размещенный в моем веб-проекте, к виртуальной машине, так что он подтвердил, что все работает нормально.
Тем не менее, Codeigniter продолжает выдавать эту ошибку каждый раз
Unable to connect to your database server using the provided settings.
Filename: D:\home\site\wwwroot\system\database\DB_driver.php
Line Number: 124
Я решил создать тестовый файл php в корне моей установки со следующим кодом, и он успешно подключился.
<?php
// Create connection : Update the hostname , DB username , DB password
//, database name.
$con=mysqli_connect("host","user","password",
"database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_errno();
}
else
{
echo "Connection with MySQL database was successful";
}
?>
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЗНАЧЕНИЯ ИЗМЕНЕНЫ
Я зашел в system / database / drivers / mysql / mysql_driver.php и удалил символ «@», чтобы показать точную ошибку отладки для db_pconnect (), и я получил
A PHP Error was encountered
Severity: Warning
Message: mysql_pconnect(): Access denied for user 'user'@'191.236.147.142' (using password: YES)
Filename: mysql/mysql_driver.php
Line Number: 91
Но те же самые детали работают на одиночном PHP-скрипте, о котором я упоминал выше. Вот мой конфиг базы данных codeIgniter
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'myvmmysql.cloudapp.net';
$db['default']['username'] = 'user';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database';
$db['default']['port'] = 3306;
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Вот краткое изложение того, что я сделал до сих пор:
Спасибо
Я попытался воспроизвести вашу проблему, используя версии кодигинтера 2.2.3 и 3.0.0, однако не удалось. Я могу подключиться к MySQL в ВМ успешно.
Пожалуйста, попробуйте выполнить следующие действия:
1. Создайте виртуальную машину в Azure, установите и настройте MySQL. Пожалуйста, обратитесь к учебным пособиям: https://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-mysql-windows-server-2008r2/.
2. Создайте веб-приложение в Azure и настройте развертывание из git.
3. Загрузите пакет condeiginter в локальную сеть, измените информацию о подключении к базе данных в
\application\config\database.php
$db['default']['hostname'] = '<your vm name>.cloudapp.net';
$db['default']['username'] = '<database username>';
$db['default']['password'] = '<password>';
$db['default']['database'] = '<database name>';
4. Протестируйте соединение MySQL на локальном компьютере и разверните в веб-приложении, созданном git. Просмотрите веб-приложение.
Меня устраивает.
Кроме того, мы могли бы столкнуться с этой проблемой, когда вводим пароль no пользователю базы данных. Поэтому, пожалуйста, проверьте пароль вашей базы данных в application\config\database.php
.
Кстати, вы можете подключиться к MySQL Server, используя локальную рабочую среду, чтобы проверить, существует ли эта ошибка.
Прежде всего, помните, что вам не нужно использовать для подключения базы данных кодов (mysql_connect()
) в вашем файле. Все будет сделано самостоятельно в Codeigniter
Таким образом, вам не нужно использовать этот код (ниже)
<?php
// Create connection : Update the hostname , DB username , DB password
//, database name.
$con=mysqli_connect("host","user","password",
"database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_errno();
}
else
{
echo "Connection with MySQL database was successful";
}
?>
Просто иди в config/autoload.php
$autoload['libraries'] = array('database')
Это соединит вашу базу данных.
И в config/database.php
$db['default']['hostname'] = '';//host name
$db['default']['username'] = '';//username
$db['default']['password'] = '';//password
$db['default']['database'] = '';//database name
Будьте уверены в тексте (прописные / цифры)