linux 查看數據庫和表 mysql 命令

查看是否有安裝數據庫 :rpm -qa|grep -i mysqlhtml

如圖已安裝:mysql

未安裝:sql

查看MySQL版本的四種方法

1 在終端下執行 mysql -V數據庫

2 在help中查找 mysql --help |grep Distrib安全

3 在mysql 裏查看 select version();服務器

4 在mysql 裏查看 status;數據結構

mysql -h localhost -u 用戶名 -p密碼                //連接數據庫
use desk_show;                                          //使用數據庫
show tables;                                              //顯示數據表
describe desk6_0;                                     //顯示錶結構架構

經過rpm查看ide

查看軟件是否安裝函數

首先咱們須要查看軟件是否已經安裝,或者說查看安裝的軟件包名稱。如查找是否安裝mysql

 

接着根據 rpm -ql 列出軟件包安裝的文件

使用  rpm -qal |grep mysql 查看mysql全部安裝包的文件存儲位置

Yum查找

除了rpm 查詢還能夠經過yum search 查找對應能夠安裝的軟件包

其餘查找方法

除了根據軟件包來找文件位置以外,最經常使用的就是經過find查找某個關鍵字好比mysql全部包含mysql服務的文件路徑

Which查找命令

Which命令是經過 PATH環境變量查找可執行文件路徑,用於查找指向這個命令所在的文件夾

Whereis命令和find相似,不過不一樣的是whereis是經過本地架構好的數據庫索引查找會比較快。若是沒有更新到數據庫裏面的文件或命令則沒法查找到信息

 

 

mysql其餘命令:

 

show databases; 顯示數據庫

 

create database name; 建立數據庫

 

use databasename; 選擇數據庫

 執行命令source /root/20151010.sql

drop database name 直接刪除數據庫,不提醒

  

show tables; 顯示錶

  

describe tablename; 顯示具體的表結構

select 中加上distinct去除重複字段

 

mysqladmin drop databasename 

刪除數據庫前,有提示。

 

顯示當前mysql版本和當前日期

select version(),current_date; 

 

root密碼管理     
設置root用戶的密碼     mysqladmin -uroot password 'password'
修改root用戶的密碼     mysqladmin -uroot -p password 'password'
 
數據庫,表管理     
進入mysql     mysql -h hostname -uroot -p
建立數據庫     mysql> create database location
導入數據結構     mysql -uroot -p location <./location.sql
查看數據庫     mysql> show databases;
進入某個庫     mysql> use location;
查看錶信息     mysql> show tables;
查看錶結構     mysql> desc Contact;
改表名     mysql> rename table Contact to Contact_new
刪除庫     mysql> drop database location
刪除表     mysql> drop table Contact
 
受權部分     
創建用戶並受權     mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'
取消受權     mysql> revoke all on location.* from gk1020@'10.1.11.71'
刷新權限     mysql> flush privileges
 
操做語句     
查詢     mysql> select * from Contact
mysql> select count(*) from Contact
修改     mysql> update Contact set RegTime=‘2008-01-01 00:00:00’ where id=1
mysql> update Contact set RegTime=‘2008-01-01 00:00:00’,CID=1 where id=1
插入     mysql> insert into Contact values('',''…)
mysql> insert into Contact(ID,CID,Contact) values('',''…)
刪除     mysql> delete from Contact where id=1
 
備份數據庫location     mysqldump -uroot -p -l location >./location.sql
備份某個表     mysqldump -uroot -p -l --database location --table Contact >./contact.sql
導出數據庫location的數據結構     mysqldump -d -uroot -p location >./location.sql
恢復數據庫:mysql -uroot -p location < location.sql
備份數據文件和sql文件分離:mysqldump -uroot -p location contact -T backup/
導出數據: select * from contact into outfile 'contact.txt';
恢復sql文件:cat contact.sql | mysql -uroot -p location
導入數據(要跟絕對路徑) mysqlimport -uroot -p zhang  /usr/local/mysql/var/backup/contact.txt
 
複製表     複製表Contact爲Contact_bak     mysql> create table Contact_bak as select * from Contact
複製表Contact的結構     mysql> create table Contact_bak as select * from Contact where 1=2

查看正在執行的任務           mysql> show processlist
kill正在執行的任務      mysqladmin -uroot -p kill process_id

查看錶狀態:mysql> check table Contact  or mysqlcheck -uroot -p -c location Contact 
修復表:        mysql> repair table Contact  or mysqlcheck -uroot -p -r location Contact 
優化表:        mysql> optimize table Contact  or mysqlcheck -uroot -p -o location Contact 

 

MySQL mysqldump 導入/導出 結構&數據&存儲過程&函數&事件&觸發器

———————————————-庫操做———————————————-
1.①導出一個庫結構

mysqldump -d dbname -u root -p > xxx.sql

②導出多個庫結構

mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql

 

2.①導出一個庫數據

mysqldump -t dbname -u root -p > xxx.sql

②導出多個庫數據

mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql

 

3.①導出一個庫結構以及數據

mysqldump dbname1 -u root -p > xxx.sql

②導出多個庫結構以及數據

mysqldump -B dbname1 dbname2 -u root -p > xxx.sql



———————————————-表操做———————————————-
4.①導出一個表結構

mysqldump -d dbname1 tablename1 -u root -p > xxx.sql

②導出多個表結構

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

 

5.①導出一個表數據

mysqldump -t dbname1 tablename1 -u root -p > xxx.sql

②導出多個表數據

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

 

6.①導出一個表結構以及數據

mysqldump dbname1 tablename1 -u root -p > xxx.sql

②導出多個表結構以及數據

mysqldump -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql



————————————–存儲過程&函數操做————————————-
7.只導出存儲過程和函數(不導出結構和數據,要同時導出結構的話,須要同時使用-d)

mysqldump -R -ndt dbname1 -u root -p > xxx.sql



———————————————-事件操做———————————————-
8.只導出事件

mysqldump -E -ndt dbname1 -u root -p > xxx.sql



—————————————–觸發器操做——————————————–
9.不導出觸發器(觸發器是默認導出的–triggers,使用–skip-triggers屏蔽導出觸發器)

mysqldump --skip-triggers dbname1 -u root -p > xxx.sql



————————————————————————————————
10.導入

mysql -u root -p
use game;
source xxx.sql



————————————————————————————————
總結一下:

-d 結構(--no-data:不導出任何數據,只導出數據庫表結構)

-t 數據(--no-create-info:只導出數據,而不添加CREATE TABLE 語句)

-n (--no-create-db:只導出數據,而不添加CREATE DATABASE 語句)

-R (--routines:導出存儲過程以及自定義函數)

-E (--events:導出事件)

--triggers (默認導出觸發器,使用--skip-triggers屏蔽導出)

-B (--databases:導出數據庫列表,單個庫時可省略)

--tables 表列表(單個表時可省略)

①同時導出結構以及數據時可同時省略-d和-t
②同時 不 導出結構和數據可以使用-ntd
③只導出存儲過程和函數可以使用-R -ntd
④導出全部(結構&數據&存儲過程&函數&事件&觸發器)使用-R -E(至關於①,省略了-d -t;觸發器默認導出)
⑤只導出結構&函數&事件&觸發器使用 -R -E -d

PS:若是可使用相關工具,好比官方的MySQL Workbench,則導入導出都是極爲方便的,以下圖。(固然爲了安全性,通常狀況下都是屏蔽對外操做權限,因此須要使用命令的狀況更多些)

 

導入遇到問題  ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes

使用Navicat For Mysql備份建新數據庫的時候,表導入不了,查看日誌,有腳本報錯,原來是文件大於16M所致

報錯信息以下:ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes。

 

因而調整配置文件: /etc/my.cnf

修改mysql的最大容許包大小 
在[mysqld]部分(不在這部分沒用)添加一句: 
max_allowed_packet=50M 
重啓mysql服務就能夠了。

重啓命令以下:

1、啓動方式 
一、使用 service 啓動:service mysqld start 
二、使用 mysqld 腳本啓動:/etc/inint.d/mysqld start 
三、使用 safe_mysqld 啓動:safe_mysqld& 
2、中止 
一、使用 service 啓動:service mysqld stop 
二、使用 mysqld 腳本啓動:/etc/inint.d/mysqld stop 
三、mysqladmin shutdown 
3、重啓 
一、使用 service 啓動:service mysqld restart 
二、使用 mysqld  腳本啓動:/etc/inint.d/mysqld restart

 

遷移服務器,要把舊服務器上的mysql數據複製到新服務器的mysql上。

我先是把舊服務器的數據庫用mysqldump複製了一份,而後想導入到新服務器,用命令導入,結果提示

 

網上說的方案,我在命令行加上--max_allowed_packet=128M

mysql --max_allowed_packet=128M -u user -ppass database < database.sql

結果仍是提示 Got a packet bigger than 'max_allowed_packet' bytes

而後我又嘗試用MysqlWorkBench客戶端導入,仍是提示 Got a packet bigger than 'max_allowed_packet' bytes 。

實在太奇怪了,明明這個.sql文件只有82K啊!

解決方案

mysql -u root -p -e "set global net_buffer_length=1000000; set global max_allowed_packet=1000000000;"

而後重啓 mysqld, 再正常導入就能夠了……

相關文章
相關標籤/搜索