MySQL的学习--用户创建授权
前一段时间,将项目改成SAAS的架构,每个billing account都可以获得一个子域,一个单独的数据库,一个单独的数据库用户和对应数据库的权限。
现在有时间了,将数据库相关的命令用博客备份一下。其中有些没有尝试过,如有错误请指正。
1. 创建用户
create user username@'host' identified by 'password';
insert into mysql.user(Host,User,Password) values("host", "username", password("password"));
如果希望指定的用户只能从某台指定的域(domain)或主机访问,可以在创建用户时指定host,例如10.10.10.22,如果希望能够从本地登录,可以将host设成localhost,如果希望在个台机器上都能链接,可以将host设为%。
2. 创建查看数据库
show databases;//显示数据库
create database dbname; //创建一个数据库
use dbname;//进入数据库
show tables;//显示表
desc tablename;//显示表结构
source sql/file/path;导入sql文件
3. 用户授权
grant all privileges on dbname.* to username@'%' identified by 'password';//授权username用户拥有dbname数据库的所有权限
grant select, update on dbname.* to username@'%' identified by 'password';//授权username用户拥有dbname数据库的指定部分权限
4. 刷新授权
flush privileges;
5. 删除用户和撤销权限
drop user username@host;//取消一个账户和其权限
revoke privilege on dbname.tablename FROM 'username'@'host';//取消授权用户
delete from user where user = "username" and host = "host";//删除用户
6. 修改用户密码
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');
7. 删除数据库
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;//把字段修改到指定字段之后