Как мы можем дать разрешение пользователю на создание базы данных в phpmyadmin(cPanel)?
У меня есть база данных и пользователь, который создается через cpanel(я добавил этого пользователя в эту базу данных, и я могу получить доступ к этой базе данных, используя этого пользователя и его пароль. Я дал все привилегии этому пользователю через cPanel(нажав на имя пользователя в таблице "текущая база данных" в cpanel и отметка флажка "все привилегии").
В моем приложении (которое создается с использованием PHP- Codeigniter Framework) я хочу создать новую базу данных и таблицы в этой базе данных в соответствии с требованиями пользователей. Для этого я использую класс Codeigniter dbforge для создания базы данных и таблиц в ней.
$this->load->dbforge();
if ($this->dbforge->create_database($database_name)){
$config['hostname'] = "localhost";
$config['username'] = "user_name";
$config['password'] = "users_password";
$config['database'] = $database_name;
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = TRUE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$config['swap_pre'] = '';
$config['autoinit'] = TRUE;
$config['stricton'] = FALSE;
$db_new=$this->load->database($config,TRUE);
$this->db=$db_new;
$this->load->dbforge();
$fields=array(
'id'=>array('type'=>'INT','auto_increment'=>TRUE,'constraint'=>'5'),
'first_name'=>array('type'=>'VARCHAR','constraint'=>'60'),
'last_name'=>array('type'=>'VARCHAR','constraint'=>'60','null' => TRUE),
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id',TRUE);
$this->dbforge->create_table('clients');
}
В приведенном выше коде я сначала создаю базу данных, а затем загружаю эту базу данных в качестве текущей базы данных. Этот код отлично работает на локальном хост-сервере WAMP, но когда я загрузил его на сервер, а затем попытался создать базу данных, он выдает следующую ошибку
Error No 1044: Access denied for user 'username'@'localhost' to database 'database_name'
Строка кода, которая вызвала ошибку
if ($this->dbforge->create_database($database_name)){
*В настройках конфигурации этой базы данных, показанных в приведенном выше коде, "имя пользователя" и "пароль" задаются как имя пользователя и пароль уже существующей базы данных (которая создается с помощью cPanel). Это проблема...? *
текущий пользователь, с помощью которого мы пытаемся создать новую базу данных, обладает всеми доступными привилегиями. но в этой привилегии CREATE DATABASE нет.
Для именования базы данных я использовал префикс_ в имени базы данных (формат имен базы данных CPanel)
Как я могу создать базу данных, используя класс dbforge, и получить доступ к этой базе данных, используя существующего пользователя...?
1 ответ
Попробуйте сначала создать суперпользователя
mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password";