MySQL基本運維命令詳解
1. 導出test_db數(shù)據(jù)庫
命令:mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 導出的文件名
mysqldump -u root -p test_db > test_db.sql # 導出所有數(shù)據(jù)庫 mysqldump -u root -p –all-databases > mysql_all.sql
2. 導出一個表
命令:mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名> 導出的文件名
mysqldump -u root -p test_db test1 > test_test1.sql
3. 導出一個數(shù)據(jù)庫結構
mysqldump -u root -p -d --add-drop-table test_db > test.sql
4. 導入數(shù)據(jù)庫
1.常用source命令
進入mysql數(shù)據(jù)庫控制臺:
mysql -u root -p
然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql))
mysql>source wcnc_db.sql
2.使用mysqldump命令
mysqldump -u username -p dbname < filename.sql
3.使用mysql命令
mysql -u username -p -D dbname < filename.sql
5. mysql進入與退出
進入
mysql -uroot -p //進入mysql控制臺 mysql -uroot -p password //進入mysql控制臺 mysql -p //進入mysql控制臺
退出
# 第一種 quit # 第二種 exit
6. 數(shù)據(jù)庫操作
1.創(chuàng)教數(shù)據(jù)庫
命令:create database <數(shù)據(jù)庫名>
mysql> create database [數(shù)據(jù)庫名];
2.顯示所有數(shù)據(jù)庫
mysql> show databases;
3.刪除數(shù)據(jù)庫
mysql> drop database [數(shù)據(jù)庫名];
4.連接數(shù)據(jù)庫
mysql> use [數(shù)據(jù)庫名];
5.查看當前使用的數(shù)據(jù)庫
mysql> select database();
6.當前數(shù)據(jù)庫包含的表信息
mysql> show tables;
7.查看數(shù)據(jù)庫字符集
mysql> show variables like '%char%';
7. 數(shù)據(jù)表操作
1.建表
mysql> create table [表名] ( id varchar(20), name varchar(20) );
2.查看表結構
命令:desc 表名,或者show columns from 表名
mysql> desc test; mysql> show columns from test; mysql> describe test; mysql> show create table test;
3.刪除表
mysql> drop table [表名];
4.插入數(shù)據(jù)
mysql> insert into [表名] values ("001","張三");
5.查詢表數(shù)據(jù)
MySQL的單表查詢比較簡單,比如最基本的一些操作:
# 查看表test中所有數(shù)據(jù) mysql> select * from test; # 查找test表中id=001內(nèi)容 mysql > select * from test where id=001; # 查找test表中已id為0開頭的內(nèi)容 mysql > select * from test where id like "0%"; # 查看表test中前2行數(shù)據(jù) mysql> select * from test order by id limit 0,2; # 或者 mysql> select * from test limit 0,2;
但是實際的場景中我們常常需要進行多表查詢,復雜的業(yè)務需求也會造成連接查詢也變得非常復雜,常用的多表查詢方式有連接查詢和子查詢,但是連接查詢的效率一般會比子查詢高,關于連接查詢可以參考下面這篇文章:
不過也有地方不建議使用連接查詢,因為連接查詢屬于重查詢,數(shù)據(jù)量大容易造成阻塞,比如阿里就明文規(guī)定禁止用三個表以上的join。做項目的時候應該遵循重業(yè)務,輕數(shù)據(jù)庫的原則,能在業(yè)務層聚合,就不要用跨表查詢。
6.刪除表數(shù)據(jù)
命令:delete from 表名 where 表達式
mysql> delete from test where id=001;
7.修改表數(shù)據(jù)
命令:update 表名 set 字段=新值 where 表達式
mysql> update test set name='admin' where id=002;
修改表結構:
# 修改test表中name字段的長度 mysql> alter table test modify column name varchar(30);
8.在表中增加字段
命令:alter table 表名 add字段 類型 其他;
# 在表test中添加了一個字段passtest,類型為int(4),默認值為0 mysql> alter table test add passtest int(4) default '0';
9.更改表名
命令:rename table 原表名 to 新表名;
# 在表test名字更改為test1 mysql> rename table test to test1;
8. 修改密碼
命令:mysqladmin -uroot -p舊密碼 password 新密碼
mysql> use mysql; mysql> update mysql.user set password='新密碼' where user='用戶名'; mysql> flush privileges; mysql> set password for 用戶名@localhost=password('你的密碼'); mysql> flush privileges;
9. 增加用戶
# 增加一個test用戶,密碼為1234 mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); mysql> flush privileges;
10. 刪除用戶
# 刪除test用戶 mysql> delete from user where user='test' and host='localhost'; mysql> flush privileges;
11. 數(shù)據(jù)庫授權
命令:grant 權限 on 數(shù)據(jù)庫名.* to 用戶名@localhost identified by ‘密碼’;
# 授權test用戶擁有test_db庫的所有權限 grant all on test_db.* to test@localhost identified by '123456'; # 授權test用戶擁有test_db庫的select,update權限 grant select,update on test_db.* to test@localhost;
12. 鎖表
# 加讀鎖 mysql> flush tables with read lock; # 解鎖 mysql> unlock tables;
13. 查看當前用戶
mysql > select user();
14. MYSQL密碼破解方法
先停止Mysql服務,以跳過權限方式啟動,命令如下
service mysqld stop /usr/local/mysql/bin/mysqld_safe –user=mysql –skip-grant-tables &
在shell終端輸入mysql并按Enter鍵,進入mysql命令行,由于MYSQL用戶及密碼認證信息存放在mysql庫中的user表,需進入mysql庫:
mysql> use mysql; mysql> update user set password=password('123456') where user='root'; mysql> flush privileges;
MYSQL root密碼修改完,需停止以Mysql跳過權限表的啟動進程,再以正常方式啟動MYSQL,再次以新的密碼登陸即可進入Mysql數(shù)據(jù)庫
15. 存儲引擎、系統(tǒng)版本、端口
# 查看當前使用的存儲引擎 mysql > show engines; # 查看mysql默認存儲引擎 mysql> show variables like '%storage_engine%'; # 查看mysql系統(tǒng)版本 mysql> select version(); # 查看mysql庫里所有表 mysql>show tables from mysql; # 查看Mysql端口 mysql>show variables like 'port'; # 查看mysql庫user表中user、host信息 mysql> select user,host from mysql.user;
參考資料:
https://www.51cto.com/article/595574.html
到此這篇關于MySQL基本運維命令的文章就介紹到這了,更多相關MySQL運維命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Centos中安裝多個mysql數(shù)據(jù)的配置實例
最近因為單位項目擴充,需要在原線上數(shù)據(jù)庫服務器上加裝一個mysql實例(實際上就是從新編譯安裝一個非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學習使用2014-04-04Mysql version can not be less than 4.1 出錯解決辦法
這篇文章主要介紹了Mysql version can not be less than 4.1 解決辦法的相關資料,需要的朋友可以參考下2016-10-10MySQL之information_schema數(shù)據(jù)庫詳細講解
這篇文章主要介紹了MySQL之information_schema數(shù)據(jù)庫詳細講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08mysql如何動態(tài)創(chuàng)建連續(xù)時間段
這篇文章主要介紹了mysql如何動態(tài)創(chuàng)建連續(xù)時間段問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01詳解MySQL like如何查詢包含''%''的字段(ESCAPE用法)
這篇文章主要介紹了詳解MySQL like如何查詢包含'%'的字段(ESCAPE用法),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12