Codeigniter, создавать таблицы и пользователей для MySQL - PullRequest
7 голосов
/ 22 июня 2011

Я хочу создавать базы данных и пользователей с помощью CI программно. Пока у меня есть эти 2 простых оператора MySQL.

CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

и

CREATE USER 'test_user'@'%' IDENTIFIED BY '***';

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'%' IDENTIFIED BY '***' WITH GRANT 
OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 
MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `testdb` . * TO 'test_user'@'%';

Можно ли их преобразовать в Active Record или CI предоставляет собственный способ создания пользователей / таблиц? я ищу документы и ничего не могу найти ...

РЕДАКТИРОВАТЬ : я делаю это как приложение для интрасети, поэтому не стоит беспокоиться о разрешениях

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

CodeIgniter предоставляет класс, называемый Database Forge , он содержит некоторые функции, которые можно использовать для базового обслуживания вашей БД.

$this->load->dbforge()

if ($this->dbforge->create_database('my_db'))
{
    echo 'Database created!';
}

и, что касается добавления пользователей, его можно, но я не знаю, является ли это хорошей практикой или нет.

, а также убедитесь, что у пользователя mysql, который выполняет запросы, есть разрешения на создание БД.

$data = array(
   'Host' => 'localhost' ,
   'User' => 'krish' ,
   'Password' => 'somepass',
   'Select_priv' => 'Y',
   'Insert_priv' => 'Y'
);

$this->db->insert('mysql.user', $data); 
2 голосов
/ 22 июня 2011

Если я понимаю, вы можете попробовать

$config['database'] = 'mysql';
// other config details e.g username. port, pass

$this->load->database($config);
$query = "INSERT INTO user (host, user, password, select_priv, 
          insert_priv, update_priv) 
          VALUES ('localhost', 'user', PASSWORD('mypass'), 'Y', 'Y', 'Y')";
$this->db->query($query);

Мой синтаксис может быть немного не так.таблица.

Однако некоторые хосты могут отказать в доступе к этому каталогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...