Быстрее будет sqlite, если ssd. Это файловая БД и производительность зависит от IO. MySQL может быть быстрее если закешировать все данные в памяти.А какая из локальных БД быстрее для не-поточных операций - MySQL или SQLite ?
(для простейшей операции - SELECT)
Может, есть какие-то подводные камни в плане стабильности?
Database g_hDB;
public void OnConfigsExecuted()
{
char error[256];
g_hDB = SQL_DefConnect(error, sizeof(error), true);
if( g_hDB == null || error[0] )
{
SetFailState("%s", error);
}
}
databases.cfg у меня дефолтовый:[1045]: Access denied for user 'root'@'localhost' (using password: NO)
"Databases"
{
"driver_default" "mysql"
// When specifying "host", you may use an IP address, a hostname, or a socket file path
"default"
{
"driver" "default"
"host" "localhost"
"database" "sourcemod"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}
"storage-local"
{
"driver" "sqlite"
"database" "sourcemod-local"
}
"clientprefs"
{
"driver" "sqlite"
"host" "localhost"
"database" "clientprefs-sqlite"
"user" "root"
"pass" ""
//"timeout" "0"
//"port" "0"
}
}
g_hLcDB = SQLite_UseDatabase("sourcemod-local", error, sizeof(error));
public void ConnectCallBack(Database hDatabase, const char[] sError, any data) // Пришел результат соеденения
{
if (hDatabase == null) // Соединение не удачное
{
SetFailState("Database failure: %s", sError); // Отключаем плагин
return;
}
g_hDatabase = hDatabase; // Присваиваем глобальной переменной соеденения значение текущего соеденения
SQL_LockDatabase(g_hDatabase); // Блокируем базу для других запросов
g_hDatabase.Query(SQL_Callback_CheckError, "CREATE TABLE IF NOT EXISTS `table_stats` (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\
`auth` VARCHAR(32) NOT NULL,\
`name` VARCHAR(32) NOT NULL default 'unknown',\
`last_connect` INTEGER UNSIGNED NOT NULL,\
`hits` INTEGER NOT NULL default '0',\
`hits_hs` INTEGER NOT NULL default '0',\
`kills` INTEGER NOT NULL default '0',\
`kills_hs` INTEGER NOT NULL default '0',\
`deaths` INTEGER NOT NULL default '0');");
SQL_UnlockDatabase(g_hDatabase); // Разблокируем базу
g_hDatabase.SetCharset("utf8"); // Устанавливаем кодировку
}
А если необходимо создать более 1 таблицы ?
C++:public void ConnectCallBack(Database hDatabase, const char[] sError, any data) // Пришел результат соеденения { if (hDatabase == null) // Соединение не удачное { SetFailState("Database failure: %s", sError); // Отключаем плагин return; } g_hDatabase = hDatabase; // Присваиваем глобальной переменной соеденения значение текущего соеденения SQL_LockDatabase(g_hDatabase); // Блокируем базу для других запросов g_hDatabase.Query(SQL_Callback_CheckError, "CREATE TABLE IF NOT EXISTS `table_stats` (\ `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\ `auth` VARCHAR(32) NOT NULL,\ `name` VARCHAR(32) NOT NULL default 'unknown',\ `last_connect` INTEGER UNSIGNED NOT NULL,\ `hits` INTEGER NOT NULL default '0',\ `hits_hs` INTEGER NOT NULL default '0',\ `kills` INTEGER NOT NULL default '0',\ `kills_hs` INTEGER NOT NULL default '0',\ `deaths` INTEGER NOT NULL default '0');"); SQL_UnlockDatabase(g_hDatabase); // Разблокируем базу g_hDatabase.SetCharset("utf8"); // Устанавливаем кодировку }
Что-то похожее нашёл на помощь моего решения, но я в этом даже прочитав не очень разобрался как, просто если буду лазить и не туда нажму боюсь что-то сломаю и всё потом не восстановлю и не пойму.
Слушай кто может помочь? С ограничением базы данных я просто не очень понимаю я просто боюсь испорчу...@Miroha, когда пользователь в MySQL создаётся, там можно указать конкретные БД, к которым у него должен быть доступ, и права доступа (только чтение/запись/модификация структуры БД/etc).
Надо сделать что бы только я смог входить на баззу данных, а если давал доступ человеку логин базы данной и пароль и он не смог войти - вот что мне надо.@Miroha, опишите целиком проблему: что дано и как надо сделать.
Перечень возможных прав доступа (чтобы можно было понимать, что можно ограничить, а что нет):
Посмотреть вложение 98105
У меня если что вот так.@Miroha, опишите целиком проблему: что дано и как надо сделать.
Перечень возможных прав доступа (чтобы можно было понимать, что можно ограничить, а что нет):
Посмотреть вложение 98105
в плане по ip? Просто я в этом новичок... эх если бы ты смог щас по быстрому по демонстрации экрана мне бы показал как что убрать и т.дА входить как?
Мне нужно что бы сайт к которому подключена база данных работал, но что бы к ней не было доступа посторонним людям, такое возможно сделать?А входить как?
Если у Вас на веб-хостинге стоит phpMyAdmin, то без шансов: сам PMA все обращения к базе осуществляет из-под IP-адреса 127.0.0.1, поэтому отличать полноценно скрипты от внешних посетителей нельзя.Мне нужно что бы сайт к которому подключена база данных работал, но что бы к ней не было доступа посторонним людям, такое возможно сделать?
Понял, а на какой хост или веб часть мне перейти что бы можно было закрыть доступ?Если у Вас на веб-хостинге стоит phpMyAdmin, то без шансов: сам PMA все обращения к базе осуществляет из-под IP-адреса 127.0.0.1, поэтому отличать полноценно скрипты от внешних посетителей нельзя.