前一段時間,將項目改成SAAS的架構,每個billing account都可以獲得一個子域,一個單獨的數據庫,一個單獨的數據庫用戶和對應數據庫的權限。
現在有時間了,將數據庫相關的命令用博客備份一下。其中有些沒有嘗試過,如有錯誤請指正。
create user 'username'@'host' identity by 'password';
insert into mysql.user(Host,User,Password) values("host", "username", password("password"));
如果希望指定的用戶只能從某台指定的域(domain)或主機訪問,可以在創建用戶時指定host,例如10.10.10.22,如果希望能夠從本地登錄,可以將host設成localhost,如果希望在個台機器上都能鏈接,可以將host設為%。
show databases;//顯示數據庫
create database dbname; //創建一個數據庫
use dbname;//進入數據庫
show tables;//顯示表
desc tablename;//顯示表結構
source sql/file/path;導入sql文件
grant all privileges on dbname.* to username@'%' identified by 'password';//授權username用戶擁有dbname數據庫的所有權限
grant select, update on dbname.* to username@'%' identified by 'password';//授權username用戶擁有dbname數據庫的指定部分權限
flush privileges;
drop user username@host;//取消一個賬戶和其權限
revoke privilege on dbname.tablename FROM 'username'@'host';//取消授權用戶
delete from user where user = "username" and host = "host";//刪除用戶
mysqladmin -uroot -proot password 123;//將root用戶的密碼改為123
update mysql.user set password=password('新密碼') where user="username" and host="localhost";
set password for 'username'@'host' = password('newpassword');
drop database dbname;//刪除一個已經確定存在的數據庫
alter table 表名 ENGINE=存儲引擎名;//修改表的存儲引擎
alter table 表名 drop 屬性名;//刪除字段
alter table 舊表名 rename to 新表名;//修改表名
alter table 表名 modify 屬性名 數據類型;//修改字段數據類型
alter table 表名 change 舊屬性名 新屬性名 新數據類型;//修改字段名
alter table 表名 drop FOREING KEY 外鍵別名;//刪除子表外鍵約束
alter table example add phone VARCHAR(20);//增加無約束的字段
alter table example add age INT(4) NOT NULL;//增加有約束的字段
alter table example add num INT(8) PRIMARY KEY FIRST;//表的第一個位置增加字段
alter table example add address VARCHAR(30) NOT NULL AFTER phone;//表的指定位置之後增加字段
alter table example modify name VARCHAR(20) FIRST;//把字段修改到第一位
alter table example modify num INT(8) ATER phone;//把字段修改到指定字段之後
慢慢看吧
mysql中可以給你一個用戶授予如select,insert,update,delete等其中的一個或者多個權限,主要使用grant命令,用法格式為:
grant 權限 on 數據庫對象 to 用戶
一、grant 普通數據用戶,查詢、插入、更新、刪除 數據庫中所有表數據的權利。
grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’
或者,用一條 mysql 命令來替代:
grant select, insert, update, delete on testdb.* to common_user@’%’
二、grant 數據庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等權限。
grant 創建、修改、刪除 mysql 數據表結構權限。
grant create on testdb.* to developer@’192.168.0.%’;
grant alter on testdb.* to developer@’192.168.0.%’;
grant drop on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 外鍵權限。
grant references on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 臨時表權限。
grant create temporary tables on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 索引權限。
grant index on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 視圖、查看視圖源代碼 權限。
grant create view on testdb.* to developer@’192.168.0.%’;
grant show view on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 存儲過程、函數 權限。
grant create routine on testdb.* to developer@’192.168.0.%’; - now, can show procedure status
grant alter routine on testdb.* to developer@’192.168.0.%’; - now, you can drop a procedure
grant execute on testdb.* to developer@’192.168.0.%’;
三、grant 普通 dba 管理某個 mysql 數據庫的權限。
grant all privileges on testdb to dba@’localhost’
其中,關鍵字 “privileges” 可以省略。
四、grant 高級 dba 管理 mysql 中所有數據庫的權限。
grant......余下全文>>
使用以下授權語句,將授權指定的192.168.1.1 和192.168.1.2 的機器,使用用戶名為root,密碼為test123的用戶訪問
grant all privileges on *.* to 'root'@'192.168.1.1' identified by 'test123';
grant all privileges on *.* to 'root'@'192.168.1.2' identified by 'test123';