Azure 上的 CodeIgniter 连接到 Windows 虚拟机 MySql
CodeIgniter On Azure Connection to Windows Virtual Machine MySql
我正在开发一个托管在 Azure 上的 CodeIgniter Web 项目,我决定在虚拟机 运行 Windows Server 2012 R2 上使用 MySQL 以下内容本教程,因为它似乎是最好的解决方案。 https://azure.microsoft.com/en-gb/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;
这里是我到目前为止所做的总结:
- 我已经为 $db['default']['dbdriver']
尝试了 mysql,mysqli 和 sqlsrv
- 我也在 test.php 文件中尝试了 mysql,它仍然连接到数据库
- 我已授予 public 从虚拟机中的所有域访问该端口的权限
- 我已将所有权限授予所有域的数据库用户
- 除了 codeigniter 之外,Connection 基本上在任何地方都有效。
- 我也试过改变 $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
确定文本(Caps/Nums)
我曾尝试使用 2.2.3 和 3.0.0 版本的 codeiginter 重现您的问题,但失败了。我可以成功连接到 VM 中的 MySQL。
请尝试按照以下步骤操作:
1、在Azure上创建VM,安装配置MySQL.Please参考教程: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 应用程序。
对我有用。
此外,当我们输入数据库用户的无密码时,我们可能会遇到这个问题。所以请在 application\config\database.php
.
中检查你的数据库密码
顺便说一句,您可以使用本地的 workbench 连接到 MySQL 服务器,以检查是否存在此错误。
我正在开发一个托管在 Azure 上的 CodeIgniter Web 项目,我决定在虚拟机 运行 Windows Server 2012 R2 上使用 MySQL 以下内容本教程,因为它似乎是最好的解决方案。 https://azure.microsoft.com/en-gb/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;
这里是我到目前为止所做的总结:
- 我已经为 $db['default']['dbdriver'] 尝试了 mysql,mysqli 和 sqlsrv
- 我也在 test.php 文件中尝试了 mysql,它仍然连接到数据库
- 我已授予 public 从虚拟机中的所有域访问该端口的权限
- 我已将所有权限授予所有域的数据库用户
- 除了 codeigniter 之外,Connection 基本上在任何地方都有效。
- 我也试过改变 $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
确定文本(Caps/Nums)
我曾尝试使用 2.2.3 和 3.0.0 版本的 codeiginter 重现您的问题,但失败了。我可以成功连接到 VM 中的 MySQL。
请尝试按照以下步骤操作:
1、在Azure上创建VM,安装配置MySQL.Please参考教程: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 应用程序。
对我有用。
此外,当我们输入数据库用户的无密码时,我们可能会遇到这个问题。所以请在 application\config\database.php
.
顺便说一句,您可以使用本地的 workbench 连接到 MySQL 服务器,以检查是否存在此错误。