centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课
mysql用的哪个my.cnf,如果都有就用后面的
查找顺序 /etc/mycnf ---> /etc/mysql/mycnf ---> $BASEDIR/my.cnf --->$DATADDIR/my.cnf ----> ~/ .my.cnf
1. 忘记root密码
编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数 skip-grant
重启数据库服务,这样就可以进入数据库不用授权了 service mysqld restart
修改相应用户密码 mysql -uroot
use mysql;
update user set password=password('your password') where user='root';
flush privileges;
最后修改/etc/my.cnf 去掉 skip-grant , 重启mysql服务
2. skip-innodb 我们可以增加这个参数不使用innodb引擎。
3. 配置慢查询日志
#log_slow_queries = /path/to/slow_queries
#long_query_time = 1
4. mysql常用操作
查看都有哪些库 show databases;
查看某个库的表 use db; show tables;
查看表的字段 desc tb;
查看建表语句 show create table tb;
当前是哪个用户 select user();
当前库 select database();
创建库 create database db1;
创建表 create table t1 (`id` int(4), `name` char(40));
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;
查看mysql队列 show processlist; show full processlist
创建普通用户并授权 grant all on *.* to user1 identified by '123456';
grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
grant all on db1.* to 'user3'@'%' identified by '231222';insert into tb1 (id,name) values(1,'aming');
更改密码,也可以用grant 修改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;
查询 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%';
插入 update db1.t1 set name='aaa' where id=1;
清空表 truncate table db1.t1;
删除表 drop table db1.t1;
删除数据库 drop database db1;
修复表 repair table tb1 [use frm];
5. mysql备份与恢复
备份 mysqldump -uroot -p123456 db1 >1.sql
恢复 mysql -uroot -p123456 db1 <1.sql
只备份一个表 mysqldump -uroot -p123456 db1 tb1 > 2.sql
只备份表结构 mysqldump -uroot -p123456 -d db1 tb1 > 2.sql
只恢复一个表 跟恢复整个库一样 mysql -uroot -p123456 db1 <1.sql
备份时指定字符集 mysqldump -uroot -p123456 --default-character-set=utf8 db >1.sql
恢复也指定字符集 mysql -uroot -p123456 --default-character-set=utf8 db < 1.sql
mysql
-e 参数直接在shell里面执行sql语句
mysql -uroot -p123456 -e"use mysql;select * from user where user='root'\G;"
没有指定端口和ip的连接方式就是使用socket连接方式
mysql -uroot -p123456
查看socket文件位置
ps aux|grep mysql
指定socket文件位置三种方式
1、mysql -uroot -p123456 -S /var/lib/mysql/mysql.sock
2、my.cnf
3、编译的时候
使用TCP/IP登录mysql
mysql -uroot -p123456 -h127.0.0. -p3306
mysql命令行不支持tab键补全!!
mysql命令历史文件
位置:在root用户根目录有一个.mysql_history文件,退出mysql命令行才会记录命令历史
不记录mysql命令历史
cat /root/.mysql_history >/dev/null
为防止乱码,在创建表的时候要指定字符集或者在my.cnf里指定默认字符集,例如utf8
vi /etc/my.cnf //添加下面内容
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
赋予权限并建立用户
grant 所有权限 ALL ON 库名.表名 to 'user1'@'127.0.0.1' identified by '123456';
*.*所有的库和所有的表
只用%的话可以表示任意IP
grant all on *.* to user1 identified by '';
更改全局变量,重启mysql失效
set global table_open_cache=;
备份数据库的时候指定字符集,防止乱码,安装zabbix的时候特别需要设置
--default-character-set=utf8
还原的时候也可以加上
--default-character-set=utf8
备份
锁表不让写
lock tables `pre_forum_post` write;
插入数据
insert into xx;
解锁
unlock tables;
表可以重新进数据
mysql命令行里面不区分大小写
f