MySQL常用命令

說來慚愧,雖計算機專業(yè)出身,了解些Linux命令,但從未熟練使用過linux操作系統(tǒng)。今入手了Mac,簡單整理下OS系統(tǒng)下Mysql常用命令。

導(dǎo)出數(shù)據(jù)

前文說到,吾僅是為了dump一份測試數(shù)據(jù)到本地環(huán)境,以擺脫數(shù)據(jù)庫連接 IP白名單,那么我們就具體dump數(shù)據(jù)庫的過程為由,說明下具體牽涉的常用MySQL命令。

1.導(dǎo)出數(shù)據(jù)庫(表)

導(dǎo)出整個數(shù)據(jù)庫

mysqldump -u 用戶名 -p --default-character-set=latin1 數(shù)據(jù)庫名 > 導(dǎo)出的文件名(數(shù)據(jù)庫默認編碼是latin1)

such as : mysqldump -u root -p operate > operate.sql

導(dǎo)出一個表

mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名> 導(dǎo)出的文件名

such as: ?mysqldump -u root -p operate op_company_user> op_company_user.sql

導(dǎo)出數(shù)據(jù)庫結(jié)構(gòu)

mysqldump -u 用戶名 -p -d -add-drop-table 數(shù)據(jù)庫名>文件名

tips:-d是沒有數(shù)據(jù),-add-drop-table在每個create語句之前增加一個drop table

2. 導(dǎo)入數(shù)據(jù)庫

source operate.sql

或者:mysqldump -u root -p operate < operate.sql

或者:mysql -u root -p -D operate < operate.sql

3. 數(shù)據(jù)庫相關(guān)操作

創(chuàng)建數(shù)據(jù)庫

create database operate;

刪除數(shù)據(jù)庫

drop database operate;

連接數(shù)據(jù)庫

use operate;

查看當(dāng)前使用的數(shù)據(jù)庫

select database();

當(dāng)前數(shù)據(jù)庫包含的表信息

show tables;

顯示所有的數(shù)據(jù)庫:

show databases;

tips: mysql的退出:quit or exit;

4. 表相關(guān)操作,操作之前應(yīng)連接某個數(shù)據(jù)庫

tips: 視為常用且基礎(chǔ)的命令,此處簡單一筆帶過。

新建表

create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);

查詢表結(jié)構(gòu)

show create table op_comapny_user;

或 desc/show columns from op_company_user;

刪除表

drop table op_company_user;

表數(shù)據(jù)的增刪改查

insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]

select <字段1,字段2,...> from < 表名 > where < 表達式 > [limit 0,2]

delete from 表名 where 表達式

update 表名 set 字段=新值,… where 條件

mysql> update MyClass set name='Mary' where id=1;

表結(jié)構(gòu)的修改

alter table 表名 add/modify/drop 字段 類型 其他;

rename table 原表名 to 新表名;

mysql數(shù)據(jù)庫的授權(quán)

比如新建一個testuser用戶賬號可以訪問,即連接到數(shù)據(jù)庫test:

grant usage on test.* to testuser@localhost;

然后,指定testuser用戶可以執(zhí)行那些操作:

grant select,insert,delete,create,drop on test.* to testuser@localhost?

identified by '密碼';

such as a completely case as follows:

#給hannah賦予所有庫的所有權(quán)限

GRANT ALL PRIVILEGES ON *.* TO 'hannah'@ '%' IDENTIFIED BY '123123' WITH GRANT OPTION;

#重新載入賦權(quán)表

FLUSH PRIVILEGES;

#收回權(quán)限(不包含賦權(quán)權(quán)限)

REVOKE ALL PRIVILEGES ON *.* FROM hannah;

#收回賦權(quán)權(quán)限

REVOKE GRANT OPTION ON *.* FROM hannah;

#重新載入賦權(quán)表

FLUSH PRIVILEGES;

連接到遠程主機上的Mysql

mysql -h ip地址 -u root -p?

至此,Mysql常用命令的介紹暫告一段落,由于默認大家具有一定的Mysql基礎(chǔ),我們只是做了簡單梳理匯總,沒有面面俱到(比如group by, having count, order by等并未提及)。下面貼上鄙人的一段真實經(jīng)歷,希望對遇到類似問題的小伙伴的有一定的幫助,或者僅以鄙人之愚蠢博君一樂~~??

話說回到初心,dump一份測試環(huán)境數(shù)據(jù)到本地以擺脫數(shù)據(jù)庫IP白名單的限制,進而便于本地的開發(fā)測試。

經(jīng)由source命令將dunmp出的.sql文件在本地執(zhí)行后,我們本地終于具有了和測試環(huán)境基本一致的表結(jié)構(gòu)和數(shù)據(jù)。下一步就是要修改配置文件,數(shù)據(jù)庫連接從遠程測試庫修改到本地。偶們用的是CI框架,直接在config文件夾下修改database.php文件即可:添加一個active_group,并配置相關(guān)db信息,大致情況如下截圖:

一開始,我將hostname='localhost:3306'(鄙人印象中l(wèi)ocalhost與127.0.0.1基本等價撒),然餓。。。頁面錯誤信息:"?Warning: mysqli::real_connect(): (HY000/2002).......refused:",一臉懵逼,不要方,?錯誤我們見到的還少嗎,不要大驚小怪,冷靜下來~~~

先查看了下mysql.server status: running OK,那么問題來了:既然被連接方活得好好的,那連接refused??,只能是連接方打開的方式或姿勢不對誒。。。

1.首先登錄MySQL命令行,查看unix socket所在目錄,輸入status,我們能看到如下結(jié)果截圖:

2. 根據(jù)phpinfo()查看PHP.ini的目錄和找到mysqli.default.port、mysqli.default_socket、pdo_mysql.default_socket的所在目錄,若其目錄值不是步驟1中的/tmp/mysql.sock,則修改php.ini中的mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket值為 /tmp/mysql.sock。

若/etc/php.ini不存在,則復(fù)制一份:(話說我直接在php.ini.default中改了,???♂?,但看了下似乎修改項算正常,就懶得改回去了,實話是我也記不清楚具體改了哪些東西了,捂臉遁走。。。。)

cp /etc/php.ini.default /etc/php.ini

3. 重啟apache/php-fpm

PS:上述的這種解決方案看起來應(yīng)該不是瞎掰,而我在進行到第二步,還沒修改ini文件default_socket信息的時候,發(fā)現(xiàn)將hostname=>127.0.0.1似乎就已連接正常了,故而這種解決方法也不算經(jīng)過了實際驗證,貼在這里,只當(dāng)給大家提供一種解決問題的思路吧。


至于為何連接地址由 localhost 改成 127.0.0.1 后正常呢?我也無甚深究,不過還是貼上大神的一段話(同樣未核驗,大家辯證地看看,廖當(dāng)談資也罷)~~

“通常意義上localhost和127.0.0.1是等價的,只是mysql在處理這個名詞的問題上有一些不同,是根據(jù)不同的地址來采取的不同的通信手段。當(dāng)主機填寫為localhost時MySQL會采用 unix domain socket連接,當(dāng)主機填寫為127.0.0.1時MySQL會采用TCP/IP的方式連接。使用Unix socket的連接比TCP/IP的連接更加快速與安全。這是MySQL連接的特性,可以參考官方文檔的說明4.2.2. Connecting to the MySQL Server。”

“為此,解決方案如下:

1.使用TCP/IP代替Unix socket。即在連接的時候?qū)ocalhost換成127.0.0.1。

2. 修改MySQL的配置文件my.cnf,指定mysql.socket的位置:

/var/lib/mysql/mysql.sock (你的mysql.socket路徑)。

3.直接在php建立連接的時候指定my.socket的位置(官方文檔:mysqli_connect)。比如:

$db = new MySQLi('localhost', 'root', 'root', 'my_db', '3306', '/var/run/mysqld/mysqld.sock')“

ps: 這樣上下對比來看,如果我當(dāng)時未修改localhost為127.0.0.1按照上面的解決方案,指定my.socket的位置,撲騰下,似乎也是可以解決問題的。個人猜測,希望對后來者的小伙伴有幫助吧。

放個彩蛋:數(shù)據(jù)庫連接的問題雖然解決了,但是a new problem comes to me: for example ,i config dev.oc server_name as my own project ,when input url=dev.oc/, it appears error page as follow;?i just guess it may be the route rules of url, next day i will confirm and solve it.

http://jingpin.jikexueyuan.com/article/47299.htm

http://blog.csdn.net/zacklin/article/details/7859680

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Mysql安裝目錄 數(shù)據(jù)庫目錄 /var/lib/mysql/ 配置文件 /usr/share/mysql(mys...
    司馬糧閱讀 667評論 0 51
  • MySql常用命令 Mysql命令mysql:連接Mysql數(shù)據(jù)庫 mysql命令格式: 1) 連接到本機上的MY...
    UEUEO閱讀 504評論 0 3
  • MySQL安裝及基本命令 Windows dos 下安裝及啟動mysql命令注冊mysql服務(wù)mysqld -in...
    Liekkas_tinyq閱讀 684評論 0 1
  • MySQL 數(shù)據(jù)庫常用命令 1、MySQL常用命令 create database name; 創(chuàng)建數(shù)據(jù)庫 use...
    55lover閱讀 4,824評論 1 57
  • 我們發(fā)現(xiàn)在一個正常的項目中,我們要 在頁面上導(dǎo)入大量 js 文件,jQuery 文件,jQuery 各種插件...
    碧玉含香閱讀 209評論 0 0