Mysql学习笔记
最近要给数据库做个瘦身,删一些以前历史数据,涉及到一些mysql数据库的事情,做个笔记。
<1>启动mysql
net start mysql
<2>关闭 mysql
net stop mysql
<3>忘记root密码
很久没用本地的mysql,忘记root密码了,想重置一下
一.windows下
1.以系统管理员身份运行cmd.
2.查看mysql是否已经启动,如果已经启动,就停止:net stop mysql.
3.切换到MySQL安装路径下。
4.在命令行输入:mysqld -nt --skip-grant-tables //忽略权限登录,然后再开一个窗口操作
5.以管理员身份重新启动一个cmd命令窗口,输入:mysql -uroot -p,Enter进入数据库。
6.如果不想改密码,只是想看原来的密码的话,可以在命令行执行这个语句
select host,user,password from mysql.user; //即可查看到用户和密码
7.如果要修改密码的话,在命令行下 依次 执行下面的语句
use mysql
// 'new_pass' 这里改为你要设置的密码
update user set password=password("new_pass") where user="root";
//重载权限表
flush privileges;
exit
8.重新启动MYSQL,输入密码登录即可!
参考贴:
https://www.cnblogs.com/wxdblog/p/6864475.html
<4>如何导出一部分数据
直接在mysql客户端,勾选对应的记录,export到.sql格式文件,就能拿到生成这些记录对应的insert语句。
<5>自己写的一个存储过程的示例
PS:其实我用存储过程来删除数据的初衷,是因为直接删,会导致数据库长时间卡顿,所以就想用存储过程来分区间删除,后面发现还是会卡,跟朋友交流才知道,用存储过程来删除数据,删除数据依然在一个事务中,还是会长期占据CPU,所以还是会卡住。
#定义 DROP PROCEDURE IF EXISTS delete_hour_run_stat; DELIMITER $$ CREATE PROCEDURE delete_hour_run_stat() BEGIN DECLARE i INT DEFAULT 1; WHILE i < 11000 DO DELETE FROM t_hour_run_stat WHERE device_id = i AND statistic_time < '2015-01-01'; SET i = i +1; END WHILE; END $$ DELIMITER ; #使用 CALL delete_hour_run_stat();