簡體   English   中英

Azure與Windows虛擬機MySql的連接上的CodeIgniter

[英]CodeIgniter On Azure Connection to Windows Virtual Machine MySql

我正在研究一個托管在Azure上的CodeIgniter Web項目,因此我決定按照本教程在運行Azure中運行Windows Server 2012 R2的虛擬機上使用MySQL,因為這似乎是最好的解決方案。 https://azure.microsoft.com/zh-CN/documentation/articles/virtual-machines-mysql-windows-server-2008r2/

我已經完成所有設置,還設法將Web項目中托管的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. 我已經嘗試$ db ['default'] ['dbdriver']的mysql,mysqli和sqlsrv
  2. 我也在test.php文件中嘗試了mysql,它仍然連接到數據庫
  3. 我已授予虛擬機中所有域對端口的公共訪問權限
  4. 我已將所有域的所有特權授予數據庫用戶
  5. 該連接基本上可以在codeigniter中的任何地方使用。
  6. 我也嘗試過更改$ db ['default'] ['pconnect'] = FALSE; 注意:我已經完成了將數據庫與codeigniter一起使用所要做的必要工作……不僅限於此

謝謝

首先請記住,您無需使用文件中的數據庫代碼( 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

確定文字(大寫/數字)

我嘗試使用Codeiginter的2.2.3和3.0.0版本重現您的問題,但是失敗了。 我可以成功連接到VM中的MySQL。

請嘗試按照以下步驟操作:

1,在Azure上創建一個VM,安裝並配置MySQL。請參考以下教程: https ://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-mysql-windows-server-2008r2/。

2,在Azure上創建一個Web應用程序,並從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上面創建的Web應用程序中。 瀏覽Web應用程序。

這個對我有用。

此外,當我們向數據庫用戶鍵入no密碼時,我們可能會遇到此問題。 因此,請在application\\config\\database.php檢查您的數據庫密碼。

順便說一句,您可以使用本地的工作台連接到MySQL Server,以檢查此錯誤是否存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM