1、mysql初始没有密码,需要设置一个密码,设置方法:
mysqladmin -uroot password "xxxxx"
2、使用VARCHAR(5) 和VARCHAR(200) 存储’hello’的空间开销是一样的。那么使用更短的列有什么优势吗?
事实证明有很大的优势。更大的列会消耗更多的内存,因为MySQL 通常会分配固定大小的内存块来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕。在利用磁盘临时表 进行排序时也同样糟糕。
所以最好的策略是只分配真正需要的空间。
3、show PROCESSLIST 查进程
4、创建用户,并给用户附加数据操作权限其中127.0.0.1可以根据实际情况修改比如某个ip段,如果本机要登录必须配置127.0.0.1或者localhost地址如下
CREATE USER 'dog'@'127.0.0.1' IDENTIFIED BY '123456'; #创建用户
GRANT ALL ON honor_m.* TO 'dog'@'127.0.0.1'; #授权用户访问honor_m.*库下面的所有权限
5.MySQL创建只读账号
> GRANT SElECT ON *.* TO 'reader'@'%' IDENTIFIED BY "passwd";
> flush privileges;
mysql 5.7修改密码
update user set authentication_string=password('QhxWKhm6OvykU9YgYH6p') where user='readreport' and host='%';
5、查看mysql主从
6、mysql备份表
CREATE TABLE bak_apply_process_0315 LIKE `apply_process`;
INSERT INTO bak_apply_process_0315 SELECT * FROM apply_process;
7、查看所有schema库和索引占用空间
select table_schema,concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size from information_schema.tables group by table_schema order by sum(data_length) desc;
8、查看某个库的所有表和索引占用空间
select table_name,concat(truncate(data_length/1024/1024,2),'MB') as data_size,
concat(truncate(index_length/1024/1024,2),'MB') as index_size
from information_schema.tables where table_schema='inv'
order by data_length desc;
9 、mysql表情况后还占用空间的原因
问题出现原因
在删除sql语句中,写法如下:DELETE FROM ueb_logistics_rule_logs WHERE type=0 LIMIT 100; 凡是这样,delete带有where条件的,都不是真删除,只是MySQL给记录加了个删除标识,自然这样操作后表数据占有空间也不会变小了
注意:DELETE FROM 表名; 这条sql语句执行后,就清空了表数据,占有空间就变为0了
解决方法
主要就是执行下面三条sql语句(轮询删除delete,避免一次性删除数据太多造成MySQL负载崩溃,另外数据量大的时候需要等待网站访问流量小的时候执行)
DELETE FROM 表名 WHERE type=0 LIMIT 100;
OPTIMIZE TABLE 表名;
10、 设置时区和sql_mode临时和永久生效
set global time_zone = '+8:00'
修改my.cnf文件永久生效
default-time_zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
11、 查看表是否锁。解决[Err] 1205 - Lock wait timeout exceeded; try restarting transaction
查询是否锁表 show OPEN TABLES where In_use > 0;
查询进程
show processlist 查询到相对应的进程===然后 kill id
补充:
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
查询 正在执行的事务:
SELECT * FROM information_schema.INNODB_TRX
根据这个事务的线程ID(trx_mysql_thread_id):
从图看出对应的mysql 线程:一个94362 (第二个正在等待锁)另一个是93847(第一个update 正在执行 没有提交事务)
可以使用mysql命令:kill 线程id 杀掉线程
-- 查看当前运行的事务的账户和事务开始的时间,及其事务语句
select
a.id,a.user,a.host,b.trx_started,b.trx_query
from information_schema.processlist a right outer join information_schema.innodb_trx b
on a.id = b.trx_mysql_thread_id;
12、 查看数据库所有表信息
select * from information_schema.tables
13、MySQL时间函数from_unixtime()date_format()unix_timestamp()now()使用说明
now() 当前时间
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-09-10 19:20:19 |
+---------------------+
unix_timestamp() 当前时间戳
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1536578429 |
+------------------+
unix_timestamp(now()) 当前时间转换成时间戳
mysql> select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
| 1536578445 |
+-----------------------+
unix_timestamp(‘2018-08-08’) 指定时间转换成时间戳
mysql> select unix_timestamp('2018-08-08');
+------------------------------+
| unix_timestamp('2018-08-08') |
+------------------------------+
| 1533657600 |
+------------------------------+
from_unixtime(1533657600) 将时间戳转换为时间 默认格式 ‘%Y-%m-%d %H:%i:%s’
mysql> select from_unixtime(1533657600);
+---------------------------+
| from_unixtime(1533657600) |
+---------------------------+
| 2018-08-08 00:00:00 |
+---------------------------+
from_unixtime(1533657600, ‘%Y-%m-%d’) 将时间戳转换为时间 并进行格式化
mysql> select from_unixtime(1533657600, '%Y-%m-%d');
+---------------------------------------+
| from_unixtime(1533657600, '%Y-%m-%d') |
+---------------------------------------+
| 2018-08-08 |
+---------------------------------------+
查询时间戳字段 转换为时间格式显示
mysql> select from_unixtime(ctime, '%Y-%m-%d') from logs limit 1;
+----------------------------------+
| from_unixtime(ctime, '%Y-%m-%d') |
+----------------------------------+
| 2018-09-18 |
+----------------------------------+
where时间戳字段
mysql> select count(*) from logs where from_unixtime(ctime, '%Y%m%d')=20180808 limit 1;
+----------+
| count(*) |
+----------+
| 12345 |
+----------+
date_format() 将时间进行格式化显示
mysql> select date_format(now(), '%Y/%m/%d');
+--------------------------------+
| date_format(now(), '%Y/%m/%d') |
+--------------------------------+
| 2018/08/08 |
+--------------------------------+
where时间字段
mysql> select count(*) from logs where date_format(cdate, '%Y%m%d')=20180910 limit 1;
+----------+
| count(*) |
+----------+
| 123 |
+----------+
14 、 插入数据带函数的变量,
INSERT INTO `decorate_page` SELECT REPLACE (UUID(), "-", ""),CONCAT("H",UNIX_TIMESTAMP(NOW(3)) * 1000),'1','亲选2首页',NULL,NULL,'system',now(),'system',NOW(),'0','0'
15、
来源:CSDN
作者:rojanzhang
链接:https://blog.csdn.net/rojanzhang/article/details/103678866