Я хочу программно создавать базы данных и пользователей с CI. Пока у меня есть эти два простых оператора 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 предоставляет собственный способ создания пользователей / таблиц? Я искал документы и ничего не нашел …
EDIT : я делаю это как приложение для интрасети, поэтому не стоит беспокоиться о разрешениях
CodeIgniter предоставляет класс под названием Database Forge , он содержит некоторые функции, которые можно использовать для выполнения базового обслуживания в вашей БД.
$this->load->dbforge() if ($this->dbforge->create_database('my_db')) { echo 'Database created!'; }
и относительно добавления пользователей, это возможно, но я не знаю, является ли это хорошей практикой или нет.
а также убедитесь, что пользователь mysql, выполняющий запросы, имеет разрешения на создание db.
$data = array( 'Host' => 'localhost' , 'User' => 'krish' , 'Password' => 'somepass', 'Select_priv' => 'Y', 'Insert_priv' => 'Y' ); $this->db->insert('mysql.user', $data);
ЕСЛИ я понимаю, вы можете попробовать
$config['database'] = 'mysql'; // other config details eg 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);
Мой синтаксис может быть немного выключен.
По сути – используйте базу данных mysql
, вставьте непосредственно в таблицу user
.
Однако некоторые хосты могут запретить доступ к этой директиве.