MySQL入门-3:安装与客户端工具
大綱
1、安裝 MySQL
2、檢索數據
3、數據過濾
一、安裝環境
CentOS-6.5-i386
mysql 5.1.73
為了方便,這里采用yum方式安裝,對于學習實驗環境完全沒問題,注意下面的操作都以root身份操作。
除非對MySQL需要定制化或者安裝多個實例,建議使用YUM/RPM包安裝 或者 通用二進制格式安裝。源碼也有30多M,如果編譯安裝需要花費大量的時間。
MySQL被Oracle收購以后,分為了以下兩個版本
Community Edtion (MySQL Community Server)
Enterprise Edtion (MySQL Enterprise Server)
MySQL 官方網站提供三種軟件包格式:
軟件包管理特有的格式(RPM包, DEP包,MSI 格式)
通用二進制格式(不需要安裝,解壓并簡單配置即可)
源碼文件(Source Code)
二、安裝MySQL
a、檢查系統是否已經安裝mysql,如果存在,則卸載然后重新安裝
#?rpm?-qa?|?grep?-i?mysql##?查看MySQL相關的安裝包 #?yum?search?mysqlb、安裝mysql服務器端
c、安裝mysql客戶端程序
#?yum?-y?install?mysqld、如果需要開發程序,那么需要安裝mysql開發庫。建議安裝它
#?yum?-y?install?mysql-devele、默認情況下,MySQL的幾個目錄
數據文件:????/var/lib/mysql 可執行文件:??/usr/bin?(mysql,?mysqldump,?mysqladmin等命令) 服務啟動腳本:/etc/init.d/mysqld 配置文件:????/etc/my.cnf安裝
mysqld????MySQL服務器端的二進制可執行文件
mysql????? ?MySQL客戶端程序
MySQL啟動后,默認情況下監聽在 3306 端口。
三、修改配置文件
?默認情況下,mysql是不支持中文字符的。因為其默認的字符集latin1,我們可以通過修改其配置文件,來更改默認的字符集設置。默認情況下的字符集如下:
mysql>?SHOW?VARIABLES?LIKE?'%char%'; +--------------------------+----------------------------+ |?Variable_name????????????|?Value??????????????????????| +--------------------------+----------------------------+ |?character_set_client?????|?latin1?????????????????????| |?character_set_connection?|?latin1?????????????????????| |?character_set_database???|?latin1?????????????????????| |?character_set_filesystem?|?binary?????????????????????| |?character_set_results????|?latin1?????????????????????| |?character_set_server?????|?latin1?????????????????????| |?character_set_system?????|?utf8???????????????????????| |?character_sets_dir???????|?/usr/share/mysql/charsets/?| +--------------------------+----------------------------+????設置字符集為UTF-8, 編輯配置文件/etc/my.cnf, 在[mysqld]下添加如下一行:default-character-set=utf8
四、啟動 && 停止 MySQL 服務
a、設置mysql開機啟動
b、啟動mysql服務
mysq l服務的啟動腳本位于 /etc/init.d/mysqld,我們可以通過以下方式啟動
#?service?mysqld?start or #?/etc/init.d/mysqld?startc、進行必要的安全性設置
#?/usr/bin/mysql_secure_installation然后根據提示,回答yes/no即可。
d、重啟或停止mysql服務
#?service?mysqld?restart?????#?重啟 #?service?mysqld?stop?????#?停止五、連接到 MySQL 服務
????MySQL與所有其他客戶機-服務器DBMS一樣,要求在能夠執行命令之前登錄到DBMS。為了連接到MySQL,需要以下信息:
主機名(如果是連接到本地mysql服務器,為localhost)
端口號(默認為3306)
一個合法的mysql用戶名
用戶口令(如果需要)
##?連接 #?mysql?-h?localhost?-P?3306?-u?root?-p -h:host指定主機 -P:Port指定端口 -u:user指定用戶名 -p:password##?退出 mysql>?quit
??在連接登錄之后,就可以訪問該用戶有權限訪問的任意數據庫和表了。
MySQL 數據庫的用戶與操作系統用戶無關, 其用戶定義比較特殊: username@host ?, 由 用戶名 以及 允許該用戶登錄的源主機 組合而成。
a、選擇數據庫
????在最初連接到mysql時,沒有任何數據庫打開供你使用。在你能執行任意數據庫操作前,需要選擇一個數據庫。為此,可使用USE關鍵字。例如,為了使用test數據庫
mysql>?USE?test;記住,必須先使用USE選擇數據庫后,才能讀取其中的數據。
b、了解數據庫和表
????想一想,如果你不知道可以使用的數據庫名時怎么辦?數據庫、表、用戶權限等信息被存儲在數據庫mysql表中。不過,內部的表一般不能直接訪問,可以mysql的SHOW命令來顯示這些信息。
查詢可用的數據庫:
mysql>?SHOW?DATABASES;獲取數據庫表的列表:
mysql>?USE?mysql; mysql>?SHOW?TABLES;查看表結構:
mysql>?DESC?user;顯示授予用戶的權限:
mysql>?SHOW?GRANTS;更多的SHOW命令, 請
mysql>???SHOW;mysql>?help?contents;六、MySQL客戶端工具
1)MySQL
????MySQL是一個簡單的SQL外殼(有GNU?readline功能)。它支持交互式和非交互式使用。當交互使用時,查詢結果采用ASCII表格式。當采用非交互式(例如,用作過濾器)模式時,結果為tab分割符格式??梢允褂妹钚羞x項更改輸出格式。如果由于結果較大而內存不足遇到問題,使用--quick選項。這樣可以強制MySQL從服務器每次一行搜索結果,而不是檢索整個結果集并在顯示之前不得不將它保存到內存中。
2)MySQLAdmin
????MySQLAdmin是一個執行管理操作的客戶程序??梢杂盟鼇頇z查服務器的配置和當前的狀態,創建并刪除數據庫等等。
3) MySQLBinLog
????服務器生成的二進制日志文件寫成二進制格式。要想檢查這些文本格式的文件,應使用MySQLBinLog實用工具。
4) MySQLDump
MySQLDump客戶端可用來轉儲數據庫或搜集數據庫進行備份或將數據轉移到另一個SQL服務器。轉儲包含創建表和/或裝載表的SQL語句。
5) MySQLImport
MySQLImport實用程序是一個批量加載器,它將文本文件的內容讀到已有表中。
6) MySQLShow
MySQLShow,客戶可用來很快地查找存在哪些數據庫,數據庫中的表,表中的列或索引。
7) Perror
Perror為系統錯誤代碼或存儲引擎(表處理)錯誤代碼打印其描述信息。
8) Replace
Replace實用工具可以及時更改文件或標準輸入中的字符串。它首先使用有限狀態機來匹配長的字符串。該工具可以用來交換字符串。
所有客戶端工具,都受my.cnf配置文件中 [client] 的影響, [mysql] 只會影響mysql客戶端工具。
所有客戶端工具,都支持一些通用的選項,比如以下這些:
????--user, -u
????--host, -h
????--password, -p
????--port, -P
????--protocol
????--database ?DATABASE , -D
MySQL
MySQL客戶端提供兩種工作模式:
交互式模式(這種模式下又可以執行兩類命令)
客戶端命令(help, 可以查看)
服務器端命令(需要服務端響應的命令,必須使用語句結束符,默認為 ;)
批處理模式(執行 mysql 腳本)
????# mysql < init.sql ? (輸入重定向方式)
? ? mysql> ?source ?/path/to/your.sql ? (\.)
-------------------讓mysql從文件中讀取語句-----------------?
--命令行從sql文件中讀取
# mysql dbname < filename.sql
--mysql會話內從sql文件讀取
source /path/to/filename.sql
\. ?/path/to/filename.sql
1、我們首先看一下mysql 命令的常見選項
[root@mysql?~]#?mysql?--help ... Usage:?mysql?[OPTIONS]?[database]-?,?--help??????????Display?this?help?and?exit.-I,?--help??????????Synonym?for?-?--auto-rehash???????Enable?automatic?rehashing.?One?doesn't?need?to?use'rehash'?to?get?table?and?field?completion,?but?startupand?reconnecting?may?take?a?longer?time.?Disable?with--disable-auto-rehash.(Defaults?to?on;?use?--skip-auto-rehash?to?disable.)-A,?--no-auto-rehash?No?automatic?rehashing.?One?has?to?use?'rehash'?to?gettable?and?field?completion.?This?gives?a?quicker?start?ofmysql?and?disables?rehashing?on?reconnect.--auto-vertical-output?Automatically?switch?to?vertical?output?mode?if?theresult?is?wider?than?the?terminal?width.-B,?--batch?????????Don't?use?history?file.?Disable?interactive?behavior.(Enables?--silent.)-C,?--compress??????Use?compression?in?server/client?protocol.-D,?--database=name?Database?to?use.--default-character-set=name?Set?the?default?character?set.--delimiter=name????Delimiter?to?be?used.-e,?--execute=name??Execute?command?and?quit.?(Disables?--force?and?historyfile.)-E,?--vertical??????Print?the?output?of?a?query?(rows)?vertically.-f,?--force?????????Continue?even?if?we?get?an?SQL?error.-G,?--named-commands?Enable?named?commands.?Named?commands?mean?this?program'sinternal?commands;?see?mysql>?help?.?When?enabled,?thenamed?commands?can?be?used?from?any?line?of?the?query,otherwise?only?from?the?first?line,?before?an?enter.Disable?with?--disable-named-commands.?This?option?isdisabled?by?default.--local-infile??????Enable/disable?LOAD?DATA?LOCAL?INFILE.-h,?--host=name?????Connect?to?host.-H,?--html??????????Produce?HTML?output.-X,?--xml???????????Produce?XML?output.--line-numbers??????Write?line?numbers?for?errors.(Defaults?to?on;?use?--skip-line-numbers?to?disable.)-L,?--skip-line-numbers?Don't?write?line?number?for?errors.-n,?--unbuffered????Flush?buffer?after?each?query.-N,?--skip-column-names?Don't?write?column?names?in?results.--sigint-ignore?????Ignore?SIGINT?(CTRL-C).--pager[=name]??????Pager?to?use?to?display?results.?If?you?don't?supply?anoption,?the?default?pager?is?taken?from?your?ENV?variablePAGER.?Valid?pagers?are?less,?more,?cat?[>?filename],etc.?See?interactive?help?(\h)?also.?This?option?does?notwork?in?batch?mode.?Disable?with?--disable-pager.?Thisoption?is?disabled?by?default.-p,?--password[=name]?Password?to?use?when?connecting?to?server.?If?password?isnot?given?it's?asked?from?the?tty.-P,?--port=#????????Port?number?to?use?for?connection?or?0?for?default?to,?inorder?of?preference,?my.cnf,?$MYSQL_TCP_PORT,/etc/services,?built-in?default?(3306).--prompt=name???????Set?the?mysql?prompt?to?this?value.--protocol=name?????The?protocol?to?use?for?connection?(tcp,?socket,?pipe,memory).-S,?--socket=name???The?socket?file?to?use?for?connection.-t,?--table?????????Output?in?table?format.--tee=name??????????Append?everything?into?outfile.?See?interactive?help?(\h)also.?Does?not?work?in?batch?mode.?Disable?with--disable-tee.?This?option?is?disabled?by?default.-u,?--user=name?????User?for?login?if?not?current?user.--connect-timeout=#?Number?of?seconds?before?connection?timeout.Default?options?are?read?from?the?following?files?in?the?given?order: /etc/mysql/my.cnf?/etc/my.cnf?~/.my.cnf? The?following?groups?are?read:?mysql?client The?following?options?may?be?given?as?the?first?argument: --print-defaults????????Print?the?program?argument?list?and?exit.?查看從配置文件讀取哪些選項 --no-defaults???????????Don't?read?default?options?from?any?option?file,except?for?login?file. --defaults-file=#???????Only?read?default?options?from?the?given?file?#. --defaults-extra-file=#?Read?this?file?after?the?global?files?are?read. --defaults-group-suffix=#Also?read?groups?with?concat(group,?suffix) --login-path=#??????????Read?this?path?from?the?login?file.2、常用客戶端命令
mysql>??For?information?about?MySQL?products?and?services,?visit:http://www.mysql.com/ For?developer?information,?including?the?MySQL?Reference?Manual,?visit:http://dev.mysql.com/ To?buy?MySQL?Enterprise?support,?training,?or?other?products,?visit:https://shop.mysql.com/List?of?all?MySQL?commands: Note?that?all?text?commands?must?be?first?on?line?and?end?with?';' ??????????(\?)?Synonym?for?`help'. clear?????(\c)?Clear?the?current?input?statement. connect???(\r)?Reconnect?to?the?server.?Optional?arguments?are?db?and?host. delimiter?(\d)?Set?statement?delimiter. edit??????(\e)?Edit?command?with?$EDITOR. ego???????(\G)?Send?command?to?mysql?server,?display?result?vertically. exit??????(\q)?Exit?mysql.?Same?as?quit. go????????(\g)?Send?command?to?mysql?server. help??????(\h)?Display?this?help. nopager???(\n)?Disable?pager,?print?to?stdout. notee?????(\t)?Don't?write?into?outfile. pager?????(\P)?Set?PAGER?[to_pager].?Print?the?query?results?via?PAGER. print?????(\p)?Print?current?command. prompt????(\R)?Change?your?mysql?prompt. quit??????(\q)?Quit?mysql. rehash????(\#)?Rebuild?completion?hash. source????(\.)?Execute?an?SQL?script?file.?Takes?a?file?name?as?an?argument. status????(\s)?Get?status?information?from?the?server. system????(\!)?Execute?a?system?shell?command. tee???????(\T)?Set?outfile?[to_outfile].?Append?everything?into?given?outfile. use???????(\u)?Use?another?database.?Takes?database?name?as?argument. charset???(\C)?Switch?to?another?charset.?Might?be?needed?for?processing?binlog?with?multi-byte?charsets. warnings??(\W)?Show?warnings?after?every?statement. nowarning?(\w)?Don't?show?warnings?after?every?statement.For?server?side?help,?type?'help?contents'? ??
\c : 清除當前輸入的語句,提前終止、取消語句執行。前提是 \c 之前沒有語句結束符。
delimiter : 設置語句結束符 ? ?
\g : ?無論語句結束符是什么,直接將此語句發送至服務器執行。
\G : ?無論語句結束符是什么,直接將此語句發送至服務器執行,并且結果以豎排方式顯示。
pager : 通過 PAGER 打印查詢結果
source ? ? \. : 執行SQL 腳本
status????? \s :獲取服務器狀態
system ? ?\! : ?執行系統shell 命令
rehash ? ?\# : ?對新建的對象(table name, colume name),支持補齊功能
命令補齊功能:
? ? ?名稱(table name, colume name)補齊
prompt
????如果有很多mysql數據庫管理,有時會發生自己忘記了在那臺服務器,那臺數據庫上,毋庸多說,誰都知道這有多危險??梢允褂胮rompt來重寫mysql客戶端提示符。
pager
????如果select出來的結果集超過幾個屏幕,那么前面的結果一晃而過無法看到。使用pager可以設置調用os的more或者less等顯示查詢結果,和在os中使用more或者less查看大文件的效果和使用方式都一樣。
delimiter
delimiter就是告訴MySQL解釋器,命令的結束符是什么。
默認情況下MySQL命令結束是以分號(;),在寫過程或者函數等情況下,這會產生不少問題,因為存儲過程中有許多語句,所以每一個都需要一個分號。因此你需要選擇一個不太可能出現在你的語句或程序中的字符串作為分隔符。
3、服務器端命令
For?server?side?help,?type?'help?contents'mysql>?help?contentsmysql>?help??KEYWORDmysqladmin
用于執行管理性操作。語法是:
shell>?mysqladmin?[OPTIONS]?command?[command-option]?command?... 通過執行mysqladmin?--help,你可以得到你mysqladmin的版本所支持的一個選項列表。目前mysqladmin支持下列命令: create?databasename?????????//創建一個新數據庫 drop?databasename???????????//刪除一個數據庫及其所有表 extended-status??????????????//給出服務器的一個擴展狀態變量 flush-hosts??????????????????//刷新所有緩存的主機 flush-logs???????????????????//刷新所有日志 flush-tables?????????????????//刷新所有表 flush-privileges?????????????//再次裝載授權表(同reload) kill?id,id,...??????????????//殺死mysql線程 password?????????????????????//新口令,將老口令改為新口令 ping?????????????????????????//檢查mysqld是否活著 processlist??????????????????//顯示服務其中活躍線程列表 reload???????????????????????//重載授權表 refresh??????????????????????//洗掉所有表并關閉和打開日志文件 shutdown?????????????????????//關掉服務器 status???????????????????????//給出服務器的簡短狀態消息--sleep?N--count?N variables????????????????????//打印出服務器變量 version??????????????????????//得到服務器的版本信息所有命令可以被縮短為其唯一的前綴。非客戶端工具
myisamchk ? ? ? # isam 表檢查工具
myisampack ? ? ?# isam 表壓縮工具
轉載于:https://blog.51cto.com/skypegnu1/1421777
總結
以上是生活随笔為你收集整理的MySQL入门-3:安装与客户端工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用MvcContrib的FormHel
- 下一篇: Content Provider 基础