Я обычно связываю php с mysql с localhost на моем ПК. Теперь я пытаюсь поместить свой проект в облако https://c9.io , но я не могу подключиться к mysql. Я уже имею базу данных mysql в облаке и ставил свой проект в одном месте …
mysql_connect("/lib/mysql/socket/mysql.sock","myUser","") or die(mysql_error());
я использую скрипт выше, чтобы подключиться, но я получаю Unknown MySQL server host '/lib/mysql/socket/mysql.sock' (1)
что я делаю?
Хорошо, поэтому ни один из вышеперечисленных ответов не сработал для меня, но, к счастью, мне удалось настроить базу данных, запустить ее и запустить по-своему, и теперь я могу делать запросы и запускать их успешно, поэтому я поделюсь с вами своим методом в надежде, что кто-то другой, чистящий интернет, может наткнуться на это, и ему не придется проходить через ту же самую царапину, что и я.
Если вы хотите получить краткое описание, просто перейдите к шагу 3 и читайте дальше. Если вы полный новичок, продолжайте читать, когда я подробно расскажу вам об этом.
Несколько вещей, чтобы упомянуть:
mysql
функции, вы должны использовать mysqli
, поскольку функции mysql
устарели, а Cloud 9 не запускает их. Шаг 1. Настройка MySQL на Cloud 9 (в терминале)
В своем проекте откройте новый терминал (щелкните вкладку «плюс» над пространством текстового редактора, выберите «Новый терминал»). В терминале введите mysql-ctl start
и нажмите Enter. MySQL запустится обратно, но вы не получите ответ в терминале.
Затем введите mysql-ctl cli
и нажмите Enter. Вы должны увидеть текст, который начинается с Welcome to the MySQL monitor...
Поздравляем, вы настроили MySQL в своем проекте Cloud 9.
Шаг 2. Создание тестовой базы данных (в терминале)
Вы можете продолжить и создать свою официальную базу данных, если хотите, но ради этого я просто создам базу данных, содержащую таблицу с идентификатором и именем пользователя. Итак, вот шаги по созданию базы данных и таблицы. Если раньше вы использовали MySQL и базы данных, то это должно быть торт, но я объясню это подробно тем, кто может не полностью понять MySQL.
SHOW DATABASES;
и нажмите Enter. Это покажет список текущих баз данных в вашем проекте. Вы можете ввести это в любое время, когда хотите просмотреть список своих баз данных в текущем проекте. CREATE DATABASE sample_db;
и нажмите Enter. Вы должны получить Query OK, 1 Row affected.
что означает, что запрос был успешным. Вы можете назвать базу данных так, как вам нравится, но для этой небольшой прогулки я назвал ее sample_db
. USE sample_db;
и нажмите Enter. Это выбирает sample_db
из списка баз данных. CREATE TABLE users (id INT(11), username VARCHAR(20));
, и нажмите Enter. Это создает таблицу с именами users
с двумя столбцами: id
и username
. Число в круглых скобках представляет собой ограничение символов, которое столбец будет хранить в базе данных. В этом случае, например, username
не будет содержать строку длиной более 20 символов. INSERT INTO users (id, username) VALUES (1, "graham12");
, и нажмите Enter. Это добавит идентификатор 1
и имя пользователя graham12
в таблице. Поскольку столбец id
является INT
, мы не помещаем кавычки вокруг него. SELECT * FROM users;
, и нажмите Enter. Это покажет все, что находится в таблице users
. Единственная запись там должна быть тем, что мы ввели с последнего шага, который мы только что сделали. Шаг 3. Получите учетные данные, необходимые для подключения к базе данных с PHP. (в терминале)
Теперь у нас есть некоторые данные в нашей таблице, с которыми мы можем протестировать наше соединение mysqli
. Но сначала нам нужно получить учетные данные, которые нам нужно будет подключить к базе данных в PHP. В Cloud 9 нам понадобятся 5 учетных данных для подключения:
Имя пользователя, пароль, имя базы данных и порт # уже известны вам. Я объясню:
SHOW VARIABLES WHERE Variable_name = 'hostname';
, и нажмите Enter. Вы получите таблицу с двумя столбцами: Variable_name
и Value
. В столбце « Value
вы должны увидеть что-то вроде yourUsername-yourProjectName-XXXXXXX
, где X
– это 7-значное число. Запишите это число или сохраните его где-нибудь. Это ваше имя хоста. (Если вы получите краткое изложение в этом пошаговом руководстве, просто запустите новый терминал и запустите свой mysql и выберите базу данных, которую вы хотите использовать, затем введите SHOW VARIABLES WHERE Variable_name = 'hostname';
Перечитайте этот шаг с самого начала, если вы в замешательстве.) sample_db
или что бы вы ни назвали вашей базой данных; 3306
. В Cloud 9 все ваши проекты подключены к 3306
. Это универсальная константа Облака 9. Это не будет чем-то еще. Напишите это как целое, а не как строку. mysqli_connect()
будет интерпретировать порт # как long
тип данных. Последний шаг : подключение к базе данных с помощью PHP! (используя PHP)
Откройте файл PHP и назовите его как хотите.
Я сделаю вид, что мое имя хоста – graham12-sample_db-1234567
для этого примера и что это то, что мои данные выглядят так:
Поэтому в PHP вставьте свои учетные данные соответственно:
<?php //Connect to the database $host = "grahamsutt12-sample_db-1234567"; //See Step 3 about how to get host name $user = "grahamsutt12"; //Your Cloud 9 username $pass = ""; //Remember, there is NO password! $db = "sample_db"; //Your database name you want to connect to $port = 3306; //The port #. It is always 3306 $connection = mysqli_connect($host, $user, $pass, $db, $port)or die(mysql_error()); //And now to perform a simple query to make sure it's working $query = "SELECT * FROM users"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { echo "The ID is: " . $row['id'] . " and the Username is: " . $row['username']; } ?>
Если вы получаете результат и нет ошибки, то вы успешно настроили базу данных и создали соединение с ней с PHP в Cloud 9. Теперь вы должны иметь возможность делать все запросы, которые вы обычно можете сделать.
Примечание. Я продемонстрировал последнюю часть без использования параметризованных запросов для простоты. Вы всегда должны использовать параметризованные запросы при работе с реальными веб-приложениями. Вы можете получить дополнительную информацию об этом здесь: MySQLi Подготовленные отчеты .
Для начала функции mysql_ * устарели, поэтому вы не должны их использовать. Посмотрите на PDO или mysqli . Затем вы захотите попробовать это в примере docs :
$link = mysql_connect('localhost:/lib/mysql/socket/mysql.sock', 'myUser', '') or die(mysql_error());
Чтобы найти запущенный вами проект ip, создайте тестовый файл с приведенным ниже кодом, запустите его и поместите результат в качестве хоста.
<?php $ip = getenv("REMOTE_ADDR") ; Echo "Your IP is " . $ip; ?>
Вы используете Cloud9, поэтому он немного отличается от использования. Чтобы подключиться к MySQL, вы должны сначала создать сервер MySQL в C9. Введите это в командной строке C9:
mysql-ctl start
C9 создаст ваш сервер mysql.
MySQL 5.1 database added. Please make note of these credentials: Root User: <username> Database Name: c9
Найдите свой IP-адрес:
echo $IP
Теперь используйте этот код с вашим именем пользователя, IP-адресом, без пароля и с базой данных «c9» для доступа к MySQL:
mysql_connect("<$IP>","<username>","") or die(mysql_error()); mysql_select_db("c9")
Надеюсь это поможет
Документация показывает, как запустить, остановить и запустить среду mysql.
Запустите MySQL mysql-ctl start
затем в yor file.php:
$ip = getenv("REMOTE_ADDR"); $port = "3306"; $user = "YorUsername"; $DB = "c9"; $conn = mysql_connect('$ip', '$user', '', '$db', '$port')or die(mysql_error()); mysql_select_db('$db','$conn')or die(mysql_error()); mysql_query("select * from YourTableName",'$conn')or die(mysql_error());
Линия getenv("REMOTE_ADDR")
возвращает тот же локальный IP-адрес, что и приложение, которое вы используете в Cloud9.