Что такое MySQL и зачем его использовать серверу CS1.6?

Что такое MySQL? Где лежит? Как подключиться? Связь сервера и сайта Редактор MySQL Что такое SQL запросы? Термины ОШИБКИ


Что такое MySQL?

Если Вы видите такие термины как: MySQL, SQL, база данных, БД, database, DB, таблица, СУБД, то знайте, речь идет о БАЗЕ ДАННЫХ!
Конечно все это немного разные вещи, но если Вы в этом не разбираетесь, то не забивайте себе голову, в конце статьи расскажем кому интересно.

База Данных, как Вы уже могли догадаться, это ящик с информацией. В этот ящик информацию можно положить, удалить или найти. Любой сайт использует сервер для хранения данных, будь то список юзеров, комментарии посетителей, или счетчик посещений.
Но мы используем Базу Данных для сервера кс1.6. Для чего?
Например для статистики игроков, или список банов, админки и пароли тоже храним в базе.

Так почему бы не хранить все эти данные на сервере в файлах? Зачем нам какой то SQL?
Все очень просто!
Чтобы серверу получить необходимую информацию из файла, нужно прочитать сначала 1-ую строку, посмотреть есть в ней то что нужно, если нет то, 2-ую и тд, пока не найдет то что нужно.
MySQL же работает так: друг, я знаю где это лежит! Держи!

Круто да? Почему MySQL такая быстрая штука? Правильней сказать, что база данных это не ящик, а таблица. Смотрите как выглядит например статистика игроков:
mysql-players

Или вот так выглядит хранение банов:
mysql-bans

Плагин посылает запрос в базу, типа: проверь, есть ли игрок со стим айди STEAM_0:0_123456789 в таблице `amx_bans` с не истекшим сроком бана
MySQL говорит: да, есть, вот такая причина бана и истечет срок через 10 дней. Плагин в свою очередь не пускает игрока на сервер.
Все данные в каждой колонке таблицы имеет свой тип: INT целое число, varchar текст, есть еще BOOL, FLOAT и куча других типов, их значения занимают мало места, благодаря «индексам» таблица сортируется и еще тонна всяких штук, благодаря которым из миллиона строк в таблице с банами, mysql найдет игрока меньше чем за секунду.
В файлах, на сервере кс, обычно хранят мало информации, потому что сервак просто зависнет если это будет не так. Помните да, что csstats.dat может очиститься и статистика игроков обнулится, этого не произойдет если использовать CsStats MySQL!


А где лежат эти таблицы MySQL?

MySQL это типа программа, запущенная на компе. Это такой же сервер как и Counter-Strike. Все популярные хостинги предоставляют своим клиентам доступ к Базе Данных.


Как подключиться к MySQL?

Разберем какие данные нужны для подключения сервера кс1.6 к mysql

  • IP сервера MySQL - это IP адрес на котором находится MySQL. Он может быть буквенный(mysql.hosting.ru) или цифровой(12.34.56.78)
  • DataBase - это имя базы данных, в которой будут находиться таблицы со статистикой игроков, банами и прочим
  • User - имя пользователя, который имеет доступ к базе данных DataBase и вносить в ее таблицы изменения и и тп
  • Пароль - пароль, чтобы никто кроме вас и вашего сервера не имел доступ

Эти данные вводите например в конфиг csstats_mysql.cfg, при первом включении плагин создает таблицу под названием csstats_players в базе данных DataBase. И потом уже добавляет в нее игроков.

Брать эти данные нужно у хостера! Поищите их где ни будь в панели, или напишите хостеру в поддержку


Связь сервера и сайта через MySQL

Тут не совсем связь, сервер пишет статистику в MySQL, а сайт берет информацию из MySQL и показывает ее пользователю в красивом оформлении.
Просто сайт своими средствами не может получить доступ, например к csstats.dat, но легко может получить доступ к БД


Как посмотреть/изменить/удалить данные в базе?

Для этих целей есть инструмент под названием PhpMyAdmin.
Его предоставляет так же хостинг. Это веб панелька, заходите на нее через обычный браузер, вводите логин и пароль от базы данных и там увидите примерно следующее:
phpmyadmin
Тут можно создавать, удалять, очищать, обновлять и все все все.


Что такое SQL запросы?

Чтобы добавить/изменить/удалить или просмотреть запись в таблице, нужна сказать mysql чего мы хотим, человеческий язык он конечно не понимает, но понимает SQL запросы.
Чтобы добавить нового игрока в статистику игроков csstats_mysql, плагин посылает запрос:

INSERT INTO `csstats_players` (`nick`,`authid`,`ip`,`frags`,`deaths`) VALUES ('Player', 'STEAM_0:0:123456789', '123.123.123.123', '10', '2')

Чтобы показать статистику игрока плагин шлет:

SELECT `nick`,`authid`,`ip`,`frags`,`deaths` FROM `csstats_players` WHERE `authid`='STEAM_0:0:123456789' LIMIT 1

Это просто небольшие примеры SQL запросов, подробнее можете почитать в интернете.
Вы можете тоже слать SQL запросы в phpmyadmin, но вряд ли они Вам понадобятся, просто знайте ;)


Термины

• База Данных, БД, DataBase, DB - это все сама база данных, в ней хранится информация
• SQL - язык управления базами данных. То есть это и есть SQL запросы, которыми можно вносить изменения в базах
• СУБД - Система Управления Базами Данных. То есть это программа(сервер), которая управляет базами данных, принимает SQL запросы и тд. Есть много разных СУБД: SQLite, PostgreSQL, MySQL и другие. Самая популярная из них это MySQL
• MySQL - это СУБД, смотрите выше.
Старался писать простым, чтобы новички поняли суть. Более подробно можете почитать в интернете, информации на эту тему там много.


Ошибки MySQL, что они означают и как с ними бороться

Если в error_ логах Вы увидите ошибку, типа: Ошибка MySQL! или MySQL Error! и подобное, ЗНАЙТЕ! Это ошибка MySQL, а не плагина!!!
Если Вы не знаете английский, воспользуйтесь переводчиком, это не сложно.
Тут разберем несколько популярных ошибок

  • Access denied for user 'user'@'localhost' (using password: YES)
    Самая популярная ошибка, она говорит: Нет доступа для пользователя "user" в базе данных с адресом localhost(тут может писаться и айпи)
    Может быть 3 причины:
    1) Не верный логин или пароль. Проверьте внимательней, не вписали ли Вы случайно лишний символ, например пробел и пр.
    2) Не включен удаленный доступ. В целях безопасности, нельзя подключатся к БД удаленно.
    Т.е. если БД и кс сервер стоит на одном компе, то адресом Базы будет localhost или 127.0.0.1. В этом случае все будет работать из коробки.
    Но если сервер КС стоит на одном хостинге например, а БД на другом, то нужно разрешить для пользователя "user" удаленное подключение к БД. В ispmanager это делается так:
    mysql-remote
    3) Возможно Вы указали не верный адрес БД
    4) Все! Другого не дано! Только эти 3 пункта!!!
  • Can't connect to MySQL server on '127.0.0.1'
    Плагин не может соединиться с сервером MySQL по этому адресу. Либо указан не верный сервер, либо этот сервер сломался и не запущен. Во втором случае, нужно писать в поддержку хостинга.
  • Lost connection to MySQL server at 'reading authorization packet', system error
    Или 'reading initial communication packet' и другие, означают неполадки с базой данных. Писать в ТП хостинга!
  • Table '27015.amx_bans' doesn't exist
    Не создана таблица в базе. Обычно такую ошибку можно увидеть в AMXBans, просто сначала нужно установить Веб часть, при ее установке создадутся все необходимые таблицы. И обязательно указать те же данные к БД на сервере, что указаны на сайте!
  • Incorrect table name ''
    Не корректная таблица с именем ''. То есть имя таблицы не указано. Внимательней смотрите настройки, сохраняйте все файлы в кодировке UTF8 без БОМ!
  • Field 'place' doesn't have a default value
    Говорит что колонка 'place' не имеет значения по умолчанию. Раньше ошибка встречалась в плагине CsStats MySQL. Решение - обновить плагин, удалить старые таблицы, новый плагин создаст новые таблицы, где укажет этому полю значение по умолчанию.
  • Too many connections
    Слишком много соединений было сделано на сервер БД. Такое бывает, если какой ни будь плагин не закрывает старое соединение с базой, и в последствии накапливается много соединений и БД начинает ругаться. В любом случае, обратитесь в ТП хостинга, им виднее по логам когда и какие соединения были сделаны.
  • MySQL server has gone away
    Скорее всего сервер долго не отвечал на запрос, и выбил ошибку таймаута. Это конечно явления не нормальное, опять же напишите в ТП хостинга, возможно происходит ддос или другие проблемы.
  • Lost connection to MySQL server during query
    Долго обрабатывался запрос на сервере и сработал таймаут