Подключаем и работаем с MySQL на сервере Rage MP

Lev Angel

Developer
Команда форума
Рано или поздно нам понадобится сохранять данные с каком-то постоянном хранилище, чтобы они были доступны даже после перезапуска сервера. Часто люди записывают нужные данные в простые текстовые файлы. Но если данных много, они разнообразные и их формат может меняться, то удобнее хранить их в базе данных.

Одной из самых популярных систем управления базами данных является MySQL. В этом уроке мы разберемся как мы можем работать с базой данных MySQL на сервере Rage MP.
Тестировать мы будет на своем компьютере и нам понадобится установить сервер MySQL и node js.
Я использую mysql сервер в комплекте программы Open Server. В этой же программе есть клиент phpMyAdmin с помощью которого можно работать с базой данных в браузере.

1604764645449.png


Node js мы скачаем и установим с официального сайта (LTS версия). При установке можно ничего не менять и оставлять все как есть по-умолчанию.

Для теста я создал базу данных rage-test и в ней простенькую таблицу accounts

1604764721613.png

и добавил парочку записей
1604764769794.png

Примечание: хранить пароле в базе данных в открытом виде очень плохо! Мы делаем это только для упрощения в уроке.

Стандартно сервер Rage MP не умеет работать с mysql. Но при помощи дополнительных модулей мы можем научить его делать это. Благодаря тому что мы установили node js теперь у нас в системе есть и пакетный менеджер npm, с помощью которого мы и добавим необходимый модуль.
В папке сервера нам нужно запустить терминал Windows и в нем выполнить команду
Код:
npm install mysql

1604765056625.png


После установки пакета mysql мы можем использовать его в своих скриптах! Ниже приведу пример подключения к базе данных

JavaScript:
var mysql = require('mysql'); // подключаем библиотеку к скрипту

var connection = mysql.createConnection({ // настройки подключения к базе данных
    host     : 'localhost',
    user     : 'mysql',
    password : 'mysql',
    database : 'rage-test'
});

connection.connect(function(err) { // подключаемся
    if (err) { // в случае ошибки в err будет объект ошибки
        console.error('Ошибка подключения: ' + err.stack);
        return;
    }

    console.log('Успешное подключение к базе данных ');
});

Если мы смогли успешно подключиться к базе данных, то теперь можем выполнить наш первый запрос
JavaScript:
connection.query('SELECT * FROM accounts', function (error, results) {
    console.log(results);
});
1604765371003.png


Если нам нужно подставить в запрос какое-то значение (например, логин который ввел пользователь), то подставляем их сразу с экранирование таким способом:
JavaScript:
connection.query('SELECT * FROM accounts WHERE login = ? AND password = ?', ['Иванов Иван', '47t6437t8ygoeruygo'], function (error, results) {
    console.log(results);
});
В самом запросе в местах где будут подставляться значения мы ставим вопросительный знак, а сами значение передаем в массиве во втором аргументе функции query (в том же порядке, что и вопросительные знаки). Это гораздо безопаснее чем подставлять данные напрямую в запрос.


Также добавим к примеру еще одну запись в таблицу accounts
JavaScript:
connection.query('INSERT INTO accounts SET login = ?, password = ?', ['Mark', '8888']);
В данном запросе я добавляю запись, и ничего не выбираю. Поэтому я не обрабатываю получение results.

1604765940336.png


По сути этого достаточно чтобы начать полноценно работать с mysql. Понятное дело нужно знать основы языка запросов SQL. Там еще много интересных возможностей. Если интересует что-то конкретное - напишите, я попробую разобрать и объяснить.

Следующий шаг: Регистрация и авторизация на CEF + MySQL

Полезные ссылки:
Документация по модулю mysql (ENG)
Сайт Open Server
Сайт node js
 
Последнее редактирование:

evgee

Junior Developer
Надо было сразу подключить шифрование (md5) и показать работу его. По уроку в общем все понятно. 5/5
 

Lev Angel

Developer
Команда форума
Спасибо!
md5 не нужно использовать в 2к20 ;) Лучше взять что-то по надежнее. У меня есть в планах дальше полноценная регистрация/авторизация + CEF. Там точно будет шифрование паролей.
 
  • Like
Реакции: test

evgee

Junior Developer
Спасибо!
md5 не нужно использовать в 2к20 ;) Лучше взять что-то по надежнее. У меня есть в планах дальше полноценная регистрация/авторизация + CEF. Там точно будет шифрование паролей.
Что порекомендуешь использовать для шифрования?
 

Lev Angel

Developer
Команда форума
И тут я немного некорректно написал. Мы не шифруем пароль, мы генерируем его хэш.
 
  • Like
Реакции: test

Jane

Junior Developer
Круто, я очень жду урок про регу и логин! А в какой программе ты пишешь код?
 
Яндекс.Метрика
Верх