CodeIgniter On Azure Подключение к виртуальной машине Windows MySql

Я работаю над веб-проектом 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;

Вот краткое изложение того, что я сделал до сих пор:

  1. Я пробовал mysql, mysqli и sqlsrv за $ db [‘default’] [‘dbdriver’]
  2. Я также пробовал MySQL в файле test.php, и он все еще подключается к базе данных
  3. Я предоставил публичный доступ к порту со всех доменов на виртуальной машине
  4. Я предоставил все привилегии пользователю базы данных со всех доменов.
  5. Соединение в основном работает везде, кроме как в codeigniter.
  6. Я также попытался изменить $ db [‘default’] [‘pconnect’] = FALSE; Не
    за работой
    NB: Я уже сделал необходимые вещи, связанные с использованием базы данных с codeigniter … это больше, чем это

Спасибо

0

Решение

Я попытался воспроизвести вашу проблему, используя версии кодигинтера 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, используя локальную рабочую среду, чтобы проверить, существует ли эта ошибка.

0

Другие решения

Прежде всего, помните, что вам не нужно использовать для подключения базы данных кодов (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

Будьте уверены в тексте (прописные / цифры)

0

По вопросам рекламы [email protected]