Intereting Posts
Получать даты с JavaScript перед запросом AJAX Расширение класса Laravel Form Laravel: создать или обновить связанную модель? Облачная платформа Google. Как загрузить файл изображения в ведро Google Cloud Storage? PHP. Предоставляет ли PDO цитату из SQL Injection? ui автозаполнение форматирование <li> результаты по 2 строкам Скажите ботам отдельно от посетителей-людей за статистику? Сравните все значения в php-массиве с другими значениями Как получить реальный URL-адрес после file_get_contents, если произойдет перенаправление? Необходимо закрыть соединения PDO Как установить адрес электронной почты в качестве имени пользователя в Joomla 3.x? Ошибка подключения PHP MySQL – реализация логики повтора Я запутался в PHP Post / Redirect / Get PHP REGEX preg_match_all каждую строку после определенной строки Неустранимая ошибка: нельзя использовать объект типа mysqli_result как массив в /home/william/public_html/forums/index.php в строке 228

Codeigniter, создавать таблицы и пользователей для MySQL

Я хочу программно создавать базы данных и пользователей с 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 .

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