//创建用户
CREATE USER 'wt'@'localhost' IDENTIFIED BY '123456'
//授权DB权限,注意是 db.* 此语句可直接创建新用户
GRANT ALL PRIVILEGES ON db.* TO 'wt'@'localhost' IDENTIFIED BY '123456';
//授权全局权限,注意是 *.* 此语句可直接创建新用户
GRANT CREATE TABLESPACE,CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER ON *.* TO 'wt'@'localhost' IDENTIFIED BY '123456';
//禁用删除权限
REVOKE DELETE,DROP ON db.* FROM 'wt'@'localhost';
//对于正常的grant/revoke/create user等操作,内存和磁盘中存储的权限都是同步更新的,所以正常的grant/revoke操作后是不需要flush privileges的
当我们直接用DML语句修改系统权限表(mysql.user、mysql.db、mysql.tables_priv、mysql.columns_priv)时,内存中的权限数组是不会同步更新的,此时我们就需要flush privileges来更新内存权限数据了
FLUSH PRIVILEGES;
//授权语句最后可以跟 WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人
GRANT ALL PRIVILEGES ON db.* TO 'wt'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION ;
//查看权限
SHOW GRANTS FOR 'root'@'localhost';
//查看自己的权限
SHOW GRANTS
//导出数据库中的数据到磁盘文件
SELECT * FROM test INTO OUTFILE 'd:/dingding2.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
//将磁盘文件导入到数据库中,local指客户端读取文件上传给服务器,如果不写则由服务器直接读取文件,此时文件必须在服务器主机上
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
//查看用户线程
SHOW PROCESSLIST
//查看数据库引擎
SHOW ENGINES
//查看数据库版本
SELECT VERSION()
//查看安装路径
SHOW VARIABLES LIKE "%char%"
//concat练习
SELECT CONCAT(HOST,USER,PASSWORD) AS info FROM mysql.`user`
SELECT CONCAT_WS('---',HOST,USER,PASSWORD) AS info FROM mysql.`user`
SELECT NAME,MIN(id) FROM mysql.`abc` GROUP BY NAME
SELECT NAME,id FROM mysql.`abc` ORDER BY NAME
SELECT NAME,GROUP_CONCAT(id) AS ids FROM mysql.`abc` GROUP BY NAME
SELECT NAME,GROUP_CONCAT(id ORDER BY id DESC SEPARATOR '-') AS ids FROM mysql.`abc` GROUP BY NAME
SELECT NAME,GROUP_CONCAT(CONCAT_WS('-',id,age) ORDER BY id DESC) AS ids FROM mysql.`abc` GROUP BY NAME
//查看binlog日志是否开启
SHOW VARIABLES LIKE 'log_%';
//主从复制的原理
①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。
②salve从库连接master主库,Master有多少个slave就会创建多少个binlog dump线程。
③当Master节点的binlog发生变化时,binlog dump 线程会通知所有的salve节点,并将相应的binlog内容推送给slave节点。
④I/O线程接收到 binlog 内容后,将内容写入到本地的 relay-log。
⑤SQL线程读取I/O线程写入的relay-log,并且根据 relay-log 的内容对从数据库做对应的操作。
//查看列
SHOW COLUMNS FROM `mysql`.`user`
//创建数据库
CREATE DATABASE 数据库名;
//删除数据库
drop database <数据库名>;
//删除表
DROP TABLE table_name;