php подключиться к mysql db в облаке 9?

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

Несколько вещей, чтобы упомянуть:

  • Вам нужно будет настроить базу данных через терминал в облаке 9. У меня не было опыта до этого в терминале раньше, но это очень просто, чтобы учиться.
  • Вы не можете использовать 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.

  1. Введите SHOW DATABASES; и нажмите Enter. Это покажет список текущих баз данных в вашем проекте. Вы можете ввести это в любое время, когда хотите просмотреть список своих баз данных в текущем проекте.
  2. Введите CREATE DATABASE sample_db; и нажмите Enter. Вы должны получить Query OK, 1 Row affected. что означает, что запрос был успешным. Вы можете назвать базу данных так, как вам нравится, но для этой небольшой прогулки я назвал ее sample_db .
  3. Введите USE sample_db; и нажмите Enter. Это выбирает sample_db из списка баз данных.
  4. Введите CREATE TABLE users (id INT(11), username VARCHAR(20)); , и нажмите Enter. Это создает таблицу с именами users с двумя столбцами: id и username . Число в круглых скобках представляет собой ограничение символов, которое столбец будет хранить в базе данных. В этом случае, например, username не будет содержать строку длиной более 20 символов.
  5. Введите INSERT INTO users (id, username) VALUES (1, "graham12"); , и нажмите Enter. Это добавит идентификатор 1 и имя пользователя graham12 в таблице. Поскольку столбец id является INT , мы не помещаем кавычки вокруг него.
  6. Введите SELECT * FROM users; , и нажмите Enter. Это покажет все, что находится в таблице users . Единственная запись там должна быть тем, что мы ввели с последнего шага, который мы только что сделали.

Шаг 3. Получите учетные данные, необходимые для подключения к базе данных с PHP. (в терминале)

Теперь у нас есть некоторые данные в нашей таблице, с которыми мы можем протестировать наше соединение mysqli . Но сначала нам нужно получить учетные данные, которые нам нужно будет подключить к базе данных в PHP. В Cloud 9 нам понадобятся 5 учетных данных для подключения:

  1. Имя хоста
  2. имя пользователя
  3. пароль
  4. Название базы данных
  5. Порт #

Имя пользователя, пароль, имя базы данных и порт # уже известны вам. Я объясню:

  1. Имя хоста – введите SHOW VARIABLES WHERE Variable_name = 'hostname'; , и нажмите Enter. Вы получите таблицу с двумя столбцами: Variable_name и Value . В столбце « Value вы должны увидеть что-то вроде yourUsername-yourProjectName-XXXXXXX , где X – это 7-значное число. Запишите это число или сохраните его где-нибудь. Это ваше имя хоста. (Если вы получите краткое изложение в этом пошаговом руководстве, просто запустите новый терминал и запустите свой mysql и выберите базу данных, которую вы хотите использовать, затем введите SHOW VARIABLES WHERE Variable_name = 'hostname'; Перечитайте этот шаг с самого начала, если вы в замешательстве.)
  2. Имя пользователя – Ваше имя пользователя, которое вы используете для входа в Cloud 9.
  3. Пароль. Нет пароля для вашей базы данных в Cloud 9.
  4. Имя базы данных. Это будет sample_db или что бы вы ни назвали вашей базой данных;
  5. Порт №3306 . В Cloud 9 все ваши проекты подключены к 3306 . Это универсальная константа Облака 9. Это не будет чем-то еще. Напишите это как целое, а не как строку. mysqli_connect() будет интерпретировать порт # как long тип данных.

Последний шаг : подключение к базе данных с помощью PHP! (используя PHP)

Откройте файл PHP и назовите его как хотите.

Я сделаю вид, что мое имя хоста – graham12-sample_db-1234567 для этого примера и что это то, что мои данные выглядят так:

  • Имя хоста: "graham12-sample_db-1234567"
  • Имя пользователя: "graham12"
  • Пароль: ""
  • Название базы данных: "sample_db"
  • Порт №: 3306

Поэтому в 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.