1.直接输入sql执行
MySQL> select now();
+---------------------+
| now() |
+---------------------+
| 2013-09-18 13:55:45 |
+---------------------+
1 row in set (0.00 sec)
2.执行编写好的sql脚本
mysql> source /home/1.sql
+---------------------+
| now() |
+---------------------+
| 2013-09-18 13:54:04 |
+---------------------+
1 row in set (0.00 sec)
3.select ...into outfile 方式执行sql
mysql> select now() into outfile '/home/2.sql';
Query OK, 1 row affected (0.00 sec)
4.使用mysql命令执行
...
本文完美在centos7或8下验证mysql5.7的安装,解决了/var/run文件不能创建的问题,并且创建了systemd文件来管理mysql启动和关闭。
mysql安装前的准备:
编译环境依赖
yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel
1
yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel
下载安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29.t...
MySQL 通过 binlog 和 relay log 进行主从数据的同步,binlog 由主库产生,从库通过复制 IO 线程拉取 binlog,写入到 relay log 中,sql 线程读取 relay log 中的事务信息,并进行应用,实现数据库的主从同步。
正常情况下,binlog 和 relay log 并不需要人为干预删除,但是在某些场景下,比如数据写入量大,磁盘空间小,binlog 保留的时间设置的过长,这时候就需要人工清理 binlog。
bin log 删除方式
1、自动删除,删除 3 天之前生成的 binlog
a,修改 my.cnf 参数, 添加参数 expire_logs_days = ...
mysql truncate表时卡在执行不结束。
通过show processlist发现语句处于waiting for meta data lock。
原因是当InnoDB 表上面有其它session执行 SELECT 或 DML操作 (INSERT, UPDATE, DELETE)时,执行truncate的session就会卡住不执行。
解决办法时杀掉执行其它操作的进程,或者等待其它session操作结束。
mysql> show engine innodb status;
mysql> KILL sessionid;
当mysql表有大量数据要删除的时候,sql的执行时间会非常长,甚至会执行超时。
比较好的办法有两种,
用存储过程,一点点删除用中间表,通过导出表到新表,然后truncate原表,再重命名新表、原表的名字。
存储过程伪过程
drop procedure if exists huge_delete;
delimiter //
create procedure huge_delete()
begin
declare rows int;
declare rows_deleted int;
set rows = 1;
set rows_deleted = 10000;
while rows > 0
do
delete from db.tabA where predicate_col < curdate() - interval 90 day order b...
mysql中的用户是用用户名和host来共同标识。
User@% 和 User@localhost 是两个不同的用户,他们可以有相同的密码,一个用户的密码修改并不会影响另一个用户的密码。 User@% 允许从所有的ip访问. User@localhost 只允许从localhost访问。
修改访问mysql的权限
1.允许所有ip访问
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='user';
FLUSH PRIVILEGES;
这样修改完以后就不能用localhost访问。
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
解决...
[root@izj6c4danzl2zg703g6apoz default]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@izj6c4danzl2zg703g6apoz default]# sudo /usr/local/mysql/support-files/mysql.server stop
Shutting down MySQL. [ 确定 ]
[root@izj6c4danzl2zg703g6apoz default]# cd /usr/local/mysql/bin
[root@izj6c4danzl2zg703g6apoz bin]# sudo su
[root@izj6c4danzl2zg703g6a...
mysql社区版没有审计功能,企业版有审计功能,但是需要付费。
社区版可以使用mcafee开发的审计功能插件libaudit_plugin.so,这个插件可以用在mysql 5.1以后的版本,使用时请下载对应的版本。
https://bintray.com/mcafee/mysql-audit-plugin/release#files
解压拷贝libaudit_plugin.so到mysql的插件目录:
查看MySQL的插件目录:
> show variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+---...
在网上看到面试中考分页的帖子,结合自己的想法,集合一下,欢迎讨论。
分页是各式各样系统开发过程中必不可少的环节,普通web应用数据量小、访问量小,分页可以用简单的方式来实现,一般是通过startrow+pagenum来实现,甚至可以提前生成静态页面,这样数据库基本没有压力,缺点是数据变动时要重新生成所有列表页,而且不能实时显示数据的变化。
不过还好的是对于大多数的应用能够实现需求即可,不必过多考虑优化。
互联网公司的海量数据,情况就变得不一样了,更多考虑的是性能和效率,加载速度提高一点点,就意味着用户体验的提升,...
mysql的数据存放目录var下有很多文件
-rw-r----- 1 root root 296208 Nov 8 21:51 mysql-bin.000051
-rw-r----- 1 root root 92588461 Nov 8 21:51 mysql-bin.000050
-rw-r----- 1 root root 1331729 Nov 8 21:51 mysql-bin.000061
-rw-r----- 1 root root 4736 Nov 8 21:51 mysql-bin.000060
-rw-r----- 1 root root 5231 Nov 8 21:51 mysql-bin.000059
-rw-r----- 1 root root 125 Nov 8 21:51 mysql-bin.000058
-rw-r----- 1 root root 125 Nov 8 21:51 mysql-bin.000057
-rw-r----- 1 root roo...