Azure: MySQL in-app(미리보기)를 사용하는 Wordpress 데이터베이스의 기본 사용자/패스 위치는 어디입니까?
방금 Azure 호스트 WordPress App Service를 시작하고 데이터베이스에 MySQL in-app(미리 보기) 옵션을 선택했습니다.이를 통해 동일한 환경에서 MySQL 서버를 웹 애플리케이션과 나란히 실행할 수 있습니다.
그러나 MySQL 쿼리를 만드는 방법에 문제가 있습니다.
MySQL 호출이 PDO 문의 형태로 되어 있는 다른 PHP 프로젝트의 코드를 다음과 같이 재사용하고 싶습니다.
try {
$db = new PDO('mysql:host=localhost;dbname=localdb;charset=utf8',
'user',
'pass');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch(PDOException $ex) {
echo "did not connect...";
}
$sth = $db->prepare("SELECT *FROM MyTable;");
$sth->execute();
유저명과 패스워드가 없는 한, 이러한 콜을 발신할 수 없습니다.
MySQL in-app(미리보기)의 PHPMyAdmin 사이드 패널은 다음과 같습니다.
사용자 계정을 가져오면 다음과 같이 표시됩니다.
어떤 사용자 및 패스를 사용해야 할지, 심지어 어떤 사용자 및 패스를 사용해야 할지 망설여집니다.localdb
모든 워드프레스 테이블이 나열됩니다.
대체적으로 PDO 문을 사용하여 데이터베이스에서 정보를 가져오려고 할 뿐인데, 어떻게 해야 하는지 알아야 합니다.
연결 문자열은 에 표시됩니다.D:\home\data\mysql\MYSQLCONNSTR_localdb.txt
이 파일은 Kudu 디버깅콘솔에서 찾을 수 있습니다.이 콘솔은 다음 사이트를 통해 액세스 할 수 있습니다.https://<yourwebsitename>.scm.azurewebsites.net/DebugConsole
.
파일 내용은 다음과 같습니다.
Database=localdb;Data Source=127.0.0.1:54306;User Id=azure;Password=6#vWHD_$
다음은 PDO를 사용하여 MySQL in-app에 연결하는 샘플 코드 조각입니다.
$dsn = 'mysql:dbname=localdb;host=127.0.0.1:54306;charset=utf8';
$user = 'azure';
$password = '6#vWHD_$';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
echo "Success: A proper connection to MySQL was made!";
중요 업데이트:
https://social.msdn.microsoft.com/Forums/azure/en-US/4c582216-bc1b-48b0-b80b-87ae540c3d05/php-azure-mysql-inapp-changed-ports-randomly 에서
VM은 여러 개의 WebApp을 호스트할 수 있으므로 여러 개의 MySQL 프로세스를 실행할 수 있습니다.MySql 프로세스를 시작할 때 이전과 동일한 포트를 사용하려고 합니다.그러나 다른 서비스 또는 다른 앱 내 MySQL에서 사용할 수 있습니다.그 결과 포트가 변경될 수 있습니다.또한 웹 앱을 VM 간에 이동할 수 있으며 사용 가능한 포트 집합이 다릅니다.
안정적인 클라이언트 앱을 작성하려면 env 변수에서 연결 정보를 읽어보십시오.상세한 것에 대하여는, 여기를 참조해 주세요.
따라서 다음과 같이 PHP의 env 변수에서 연결 문자열을 가져옵니다.
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';
foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
continue;
}
$connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}
[ Configuration ](설정)
이름 = defaultConnection Value = Database= your_database;데이터 소스=your_website.mysql.database.azure.com;사용자 ID=your_username;비밀번호=your_password
그리고 수레쉬42326은 효과가 있었다.
저는 azurewebsites.net을 방문하면 문제가 해결되었습니다.그 후 scm.azurewebsites.net/phpmyadmin,을 검색하면 패스워드가 묻지 않습니다.
https://github.com/projectkudu/kudu/issues/2238#issuecomment-427358981
/*Add at the begining of the file
if you want to connect to custom database then fill this variable $connectstr_dbname = 'MY_CUSTOM_DB'; and comment or remove $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value); from below code...
*/
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';
foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
continue;
}
$connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $connectstr_dbname);
/** MySQL database username */
define('DB_USER', $connectstr_dbusername);
/** MySQL database password */
define('DB_PASSWORD', $connectstr_dbpassword);
/** MySQL hostname : this contains the port number in this format host:port . Port is not 3306 when using this feature*/
define('DB_HOST', $connectstr_dbhost);
언급URL : https://stackoverflow.com/questions/41601885/azure-where-is-default-user-pass-for-wordpress-database-using-mysql-in-appprev
'programing' 카테고리의 다른 글
componentWillReceiveProps 라이프 사이클 메서드를 사용하는 경우 (0) | 2023.02.14 |
---|---|
안심 - 응답 JSON을 목록으로 역직렬화 (0) | 2023.02.10 |
onChange->setState에서 한 단계 늦게 응답합니다. (0) | 2023.02.10 |
송신하기 전에 연락처 폼7에 접속하는 방법 (0) | 2023.02.10 |
MUI에서 체크박스의 색상을 커스터마이즈하려면 어떻게 해야 합니까? (0) | 2023.02.10 |