1、因某些原因進不去數據庫
【實例】重置mysql密碼
vim my.cnf
在[mysqld]下添加“skip-grant”
/etc/init.d/mysqld restart
進入數據庫就無需密碼驗證:
mysql > update user setpassword=password(‘your passwd’) where user=‘root’;
> flush privileges;
2、
查看mysql引擎:mysql -uroot -p passwd -e “show variables like ‘%engine%’”;
3、mysql的兩種連接方式
TCP:mysql -uroot -p [password] -h [hostIP] -P [port(default3306)]
socket:
mysql -uroot -p [password] -e“use mysql;select user,host from user where user=’root’”-S [socket file]
mysql.sock文件在安裝時或配置時指定過,若系統找不到,需要做軟連接到/tmp/mysql.sock
mysql命令歷史:cat.mysql_history,是自動記錄的,如果去掉可以指向/dev/null
4、mysql常用操作
查看都有哪些庫
show databases;
查看某個庫的表
use db; show tables;
查看錶的字段
desc tb;
查看建表語句
show create table tb\G;(\G表示格式化顯示)
當前用戶
select user();
當前庫
select database();
創建庫
create database db1;
創建表
create table t1 (`id` int(4), `name` char(40)) ENGINE=DEFAULT CHARSET=gbk|utf8;
查看數據庫版本
select version();
查看mysql狀態
show status;
修改mysql參數
show variables like 'max_connect%'; set globalmax_connect_errors = 1000;
查看mysql隊列
show 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');
刪除數據
delete from tab where name=’1’;
更改密碼
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; selectdatabase();
刪除數據庫
drop database db1;
修復表
repair table tb1 [use frm];
備份
mysqldump -uroot -p db >1.sql
恢復
mysql -uroot-p db <1.sql
只備份一個表
mysqldump-uroot -p db tb1 > 2.sql
備份時指定字符集
mysqldump -uroot -p --default-character-set=utf8 db >1.sql
恢復也指定字符集
mysql-uroot -p --default-character-set=utf8 db < 1.sql
複製表:
CREATE table db1.tab_201605 as select * from db2.tab_20160501 where 1!=1;
(複製表結構,不復制數據和索引)
CREATE table db1.tab_201605 as select * from db2.tab_20160501 where 1=1;
(複製表結構,複製原表的數據,不復制索引)
CREATE table db1.tab_201605 like db2.tab_20160501;
(複製表結構和所有約束,包括主鍵索引,不會複製數據)