Umarım bu doğru yönde işaret edebilir: USER()
işleviyle ilgili MySQL web sitesinden
http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_user
: sunucuya bağlanırken
değeri belirtilen kullanıcı adını gösterir ve bağlandığınız istemci ana bilgisayarı.
Neede biraz farklı bir şey yapmam gerekti, ama seninle aynı alanda. Benim durumumda, kullanıcılara tüm ayrıcalıkları vermeden veritabanı oluşturmayı istedim.
Şablon olarak kullanabileceğinizi umduğum veritabanını vermek için saklı yordamım burada.
Ayrıntılı açıklamalar için
DROP PROCEDURE IF EXISTS createdb;
DELIMITER $$
CREATE
DEFINER = 'root'@'localhost'
PROCEDURE createdb (IN dbname CHAR(50))
BEGIN
DECLARE EXIT HANDLER FOR 1007
SELECT CONCAT("Can't create database '",
dbname, "'; database exists") as msg;
SET @v_createdb = CONCAT('CREATE DATABASE ', dbname);
SET @v_grant = CONCAT('GRANT ALL PRIVILEGES ON ', dbname,
'.* TO \'',SUBSTRING_INDEX(USER(),'@',1),'\'@\'%\'');
PREPARE stmt_createdb FROM @v_createdb;
PREPARE stmt_grant FROM @v_grant;
EXECUTE stmt_createdb;
EXECUTE stmt_grant;
FLUSH PRIVILEGES;
END $$
, ziyaret etmek isteyebilirsiniz http://www.microshell.com/database/how-to-grant-create-database-for-non-root-users/