创建可以无主机限制的账号

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)。

  1. 无参数调用:UNIX_TIMESTAMP() 返回值:自'1970-01-01 00:00:00’的到当前时间的秒数差 例子:

SELECT UNIX_TIMESTAMP() => 1339123415

  1. 有参数调用:UNIX_TIMESTAMP(date) 其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的YYMMDD或YYYMMDD格式的数字 返回值:自'1970-01-01 00:00:00’与指定时间的秒数差

举例说明:

  1. 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

  1. DATETIME字符串格式:(日期和时间的组合类型)
1SELECT UNIX_TIMESTAMP(2012-06-08 10:48:55)  => 1339123415
2SELECT UNIX_TIMESTAMP(NOW())  => 1339123415 注:NOW()的返回值是一个DATETIME字符串格式

参考: https://blog.csdn.net/vkingnew/article/details/81170290