创建可以无主机限制的账号
1create USER 'clibing'@'%' IDENTIFIED BY 'ty88yYMQH0udg1pC';
创建数据库
1CREATE SCHEMA IF NOT EXISTS `clibing` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;
授权所有数据库权限
1grant all on *.* to 'clibing'@'%';
撤销授权所有数据库权限
1revoke all on *.* from 'clibing'@'%';
只授权对clibing数据库的所有权限
1grant all on clibing.* to 'clibing'@'%';
只授权对clibing数据库的select权限
1grant select on clibing.* to 'clibing'@'%'
修改密码
1update user set password=password('123456') where user='root' and host='%';
1flush privileges;
SET PASSWORD FOR ‘root’@’%’ = PASSWORD(‘111111’);
fulltext
1CREATE TABLE articles (
2 id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
3 title VARCHAR (200),
4 body TEXT,
5 FULLTEXT (title, body) WITH PARSER ngram
6) ENGINE = INNODB;
7
8select * from articles where match(title, body) against('key1 key2' in natural language mode)
新库新账号
- 创建数据库
1CREATE SCHEMA `TestDB` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;
- 创建用户
1create USER 'test-db'@'%' IDENTIFIED BY '123456';
如果出现一下提示,说明已经存在,use mysql; select user, host from user;
进行查看确认,
删除用户 drop user 'test-db'@'%'
, 删除后一定要执行 flush privileges;
1ERROR 1396 (HY000): Operation CREATE USER failed for 'test-db'@'%'
- 授权
1 grant all on TestDB.* to 'test-db'@'%';
- 验证
1mysql -u 'test-db' -p
2
3密码上面设置的 123456
常用错误
- 解决Cannot delete or update a parent row: a foreign key constraint fails报错,即删除带有外键关联的数据
1SET foreign_key_checks = 0; // 先设置外键约束检查关闭
2
3drop table table1;
4detele from table where ;
5
6// 删除表或数据
7SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性
binlog
方案一
1# 设置binlog的过期时间
2set global expire_logs_days = 30;
3# 切换binglog
4flush logs;
方案二
11. show variables like 'log_%';
2 查看binlog日志是否开启
3
42. show master logs;
5 查看所有binlog日志列表
6
73. show master status;
8 查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值。
9
104. flush logs;
11 4.1 flush 刷新log日志,自此刻开始产生一个新编号的binlog日志文件;
12 4.2 注意:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqlddump备份数据时加-F选项也会刷新binlog日志;
13
145. reset master;
15 重置(清空)所有binlog日志
时间戳格式化
函数 from_unixtime(timestamp ,date_format)
- timestamp :时间戳,可为一串数字,也可为字段。
- date_format:时间格式,不填默认为%Y-%m-%d %H:%i:%s的格式。
日期格式 | 说明 |
---|---|
%Y | 年,4位数字,如1999 |
%y | 年,2位数字,如00 |
%M | 月,英文月份,如January |
%b | 月,缩写的月份名字,如Jan |
%m | 月,数字(01……12) |
%c | 月,数字(1……12) |
%W | 星期,名字,如Sunday |
%a | 星期,缩写的名字,如Sun |
%D | 天,有英文前缀的天日期,如1st |
%d | 天,月份中的天数,数字(01……31) |
%e | 天,月份中的天数,数字(1……31) |
%H | 小时,数字(00……23) |
%k | 小时,数字(0……23) |
%h | 小时,数字(01……12) |
%l | 小时,数字(1……12) |
%r | 时间,12 小时(hh:mm:ss [AP]M) |
%T | 时间,24 小时(hh:mm:ss) |
%S | 秒(00~59) |
%s | 秒(00~59) |
1select from_unixtime(create_time, '%Y-%m-%d %H:%i:%s') from t;
函数 unix_timestamp()
unix_timestamp时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。
- 无参数调用:UNIX_TIMESTAMP() 返回值:自'1970-01-01 00:00:00’的到当前时间的秒数差 例子:
SELECT UNIX_TIMESTAMP() => 1339123415
- 有参数调用:UNIX_TIMESTAMP(date) 其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的YYMMDD或YYYMMDD格式的数字 返回值:自'1970-01-01 00:00:00’与指定时间的秒数差
举例说明:
- DATE字符串格式:(日期类型)
1SELECT UNIX_TIMESTAMP(‘2012-06-08’) => 1339084800
2SELECT UNIX_TIMESTAMP(CURRENT_DATE()) =>1339084800 注:CURRENT_DATE ()的返回值是一个DATE字符串格式 以下几种格式返回的结果相同:
1SELECT UNIX_TIMESTAMP('20120608');
2SELECT UNIX_TIMESTAMP('2012-6-8');
3SELECT UNIX_TIMESTAMP('2012-06-08');
结果都是:1339084800
- DATETIME字符串格式:(日期和时间的组合类型)
1SELECT UNIX_TIMESTAMP(‘2012-06-08 10:48:55’) => 1339123415
2SELECT UNIX_TIMESTAMP(NOW()) => 1339123415 注:NOW()的返回值是一个DATETIME字符串格式
评论