Mysql中經常使用操做(密碼破解、數據庫備份、數據庫導入、受權)

修改表的編碼方式:

ALTER TABLE `test` DEFAULT CHARACTER SET utf8;該命令用於將表test的編碼方式改成utf8;

修改字段的編碼方式:

ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 該命令用於將表test中name字段的編碼方式改成utf8

更改表的引擎:

alter table `table_name` engine=innodb;  
alter table `table_name` engine=myisam;

刷新權限:

flush privileges

受權:

建立test用戶 並只能操做follow_db數據庫:
CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123';

GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, TRIGGER, CREATE VIEW, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `follow\_db`.* TO 'test'@'%';

GRANT GRANT OPTION ON `follow\_db`.* TO 'test'@'%';

Mysql密碼修改/破解

1. mysqladmin -u root -p password mypasswd 

輸入這個命令後,須要輸入root的原密碼,而後root的密碼將改成mypasswd。 mysql

2.MySQL 忘記口令的解決辦法 sql

若是 MySQL 正在運行,首先殺之:數據庫

killall -TERM mysqld。 

啓動 MySQL :服務器

/usr/bin/mysqld_safe --skip-grant-tables & 

就能夠不須要密碼就進入 MySQL 了。 函數

而後就是 編碼

>use mysql 
>update user set password=password("new_pass") where user="root"; 
>flush privileges; 

從新殺 MySQL ,用正常方法啓動 MySQL 。 加密

3.先中止mysql服務。rest

而後打開mysql配置文件/etc/my.cnf.
在【mysqld】下面添加一行代碼:skip-grant-tables。
這行代碼意思就是跳過跳過受權表,便是能夠跳過密碼驗證直接進入數據庫。
service mysqld restart //重啓mysql數據庫。假如不重啓的話,不會生效。
mysql -uroot -p  //此時直接回車,既能夠進入數據庫。
出現mysql>就說明你已經進入到mysql數據庫裏了。
進數據庫後,
use mysql //選擇mysql這個庫,由於mysql的root密碼存放在這個數據庫裏。
show tables  //查看下mysql庫裏有哪些表,咱們須要操做的用戶名密碼都在user表裏。
desc user  //查看下user表有哪些字段
更改root密碼。
update user set password=password('123456') where user="root";  //用戶選root,能夠隨便更改爲任意密碼,我這裏設置的123456,password()是mysql密碼加密的一個函數。
 flush privileges;   //刷新下密碼,使更改的生效。
exit  //退出數據庫
從新登陸
mysql -uroot -p   //回車輸入剛剛更改的密碼,就能進去了。
而後再次進入配置文件vi /etc/my.cnf 把skip-grant-tables去掉。

Mysql數據庫備份

mysqldump -uroot -p test >/test.sql 回車輸入密碼便可

Mysql 數據庫導入(1)

Mysql -uroot -p test < /test.sql 回車輸入密碼便可

Mysql 數據庫導入(2)

進入 MySQL 控制檯(如:MySQL 5.5 Command Line Client),使用 source 命令執行
Mysql>source 【sql腳本文件的路徑全名】 或 Mysql>\. 【sql腳本文件的路徑全名】,示例:
source C:\test.sql 或者 \. C:\test.sql

索引操做

一、建立索引(PRIMARY KEY,INDEX,UNIQUE)code

mysql>ALTER TABLE 表名 ADD INDEX index_name (column list);
mysql>ALTER TABLE 表名 ADD UNIQUE index_name (column list);
mysql>ALTER TABLE 表名 ADD PRIMARY KEY index_name (column list);

二、刪除索引(PRIMARY KEY,INDEX,UNIQUE)索引

mysql>ALTER TABLE 表名 DROP INDEX index_name (column list);
mysql>ALTER TABLE 表名 DROP UNIQUE index_name (column list);
mysql>ALTER TABLE 表名 DROP PRIMARY KEY index_name (column list);

三、重建索引

mysql> REPAIR TABLE 表名 QUICK;

四、查看某個數據表的索引

mysql> SHOW INDEX FROM 表名;

查看錶結構

Desc  表名

容許遠程登陸mysql

直接受權(推薦)
從任何主機上使用root用戶,密碼:youpassword(你的root密碼)鏈接到mysql服務器:
# mysql -u root -proot 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
操做完後切記執行如下命令刷新權限 

FLUSH PRIVILEGES

清空表

drop truncate delete 程度從強到弱
一、drop table tb 
drop將表格直接刪除,沒有辦法找回
二、truncate table  tablename
truncate 刪除表中的全部數據,不能與where一塊兒使用
三、delete from tb (where)
delete 刪除表中的數據(可制定某一行)
truncate和delete的區別
① 事務:truncate是不能夠rollback的,可是delete是能夠rollback的;
緣由:truncate刪除整表數據(ddl語句,隱式提交),delete是一行一行的刪除,能夠rollback
② 效果:truncate刪除後將重置索引(自增加id從零開始) ,delete不會刪除索引 
③ truncate 不能觸發任何Delete觸發器。
④ delete 刪除能夠返回行數
相關文章
相關標籤/搜索