主要內容:
- 安裝、卸載和配置mysql
- 配置和管理msyql
- 終端啓動mysql和停止mysql
- 檢查mysql進程是否開啓
- 登陸和退出
- 忘記root密碼的解決方案
- 查看數據庫、表、列、存儲過程等信息命令——Show
- 創建用戶、賦訪問權限、修改密碼
- 數據定義、數據操作語句
- 數據的備份與恢復
- 外部IP無法訪問問題
1、安裝、卸載和配置mysql
見(http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html)
三種安裝方式:
1.從網上安裝sudo apt-get install mysql-server。裝完已經自動配置好環境變量,可以直接使用mysql的命令。
注:建議將/etc/apt/source.list中的cn改成us,美國的服務器比中國的快很多。
2.安裝離線包,以mysql-5.0.45-linux-i686-icc-glibc23.tar.gz爲例。
3.二進制包安裝:安裝完成已經自動配置好環境變量,可以直接使用mysql命令
網上安裝和二進制包安裝比較簡單,重點說安裝離線包。
1.groupadd mysql
2.mkdir /home/mysql
3.useradd -g mysql -d /home/mysql mysql
4.copy mysql-5.0.45-linux-i686-icc-glibc23.tar.gz到/usr/local目錄
5.解壓:tarzxvf mysql-5.0.45-linux-i686-icc-glibc23.tar.gz
6.ln -s mysql-5.0.45-linux-i686-icc-glibc23 mysql
7.cd /usr/local/mysql
8.chown -R mysql .
9.chgrp -R mysql .
10.scripts/mysql_install_db --user=mysql (一定要在mysql目錄下執行,注意輸出的文字,裏邊有修改root密碼和啓動mysql的命令)
11.爲root設置密碼:./bin/mysqladmin -u root password 'passw0rd'
卸載mysql
2、配置和管理msyql:
設置字符集(以utf8爲例):
2) 修改my.cnf,在[client]下添加default-character-set=utf8
3) 在[server]下添加default-character-set=utf8,init_connect='SETNAMES utf8;'
4) 重啓mysql。
注:只有修改/etc下的my.cnf才能使client的設置起效,安裝目錄下的設置只能使server的設置有效。
二進制安裝的修改/etc/mysql/my.cnf即可
3、終端啓動mysql和停止mysql
見(http://www.2cto.com/os/201205/132796.html)
sudo start mysql #手動的話這樣啓動
sudo stop mysql #手動停止
若無效可通過service啓動和停止:
sudo service mysql start
sudo service mysql stop
4、檢查mysql進程是否開啓
要想檢查mysqld 進程是否已經開啓,可以使用下面的命令:
pgrep mysqld
如果進程開啓,這個命令將會返回該進程的id;否則不返回任何信息。
5、登陸和退出
見(http://www.2cto.com/os/201205/132796.html)
使用命令mysql(登錄後使用命令:mysql–help即可查看該命令的具體使用語法)
如下是簡單的使用樣例:
mysql –u xxxx –p;
這裏xxxx表示用戶名(默認情況下會有個root用戶,密碼爲空)。然後會提示你輸入密碼Enterpassword:,此時輸入密碼xxxxxx(在linux下輸入密碼時,不會顯示任何字符),密碼正確則進入mysql。例如:
最後,輸入“quit;”即可退出mysql。此時,終端會輸出Bye作爲反饋。
6、忘記root密碼的解決方案
參見(http://www.cnblogs.com/allenblogs/archive/2010/08/12/1798247.html)
主要思想:修改其配置文件,使登陸mysql時跳過權限檢查,修改好密碼後,再將之前做的修改去掉。如下:
1.首先確認服務器出於安全的狀態,也就是沒有人能夠任意地連接MySQL數據庫。
因爲在重新設置MySQL的root密碼的期間,MySQL數據庫完全出於沒有密碼保護的
狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以採用將MySQL對
外的端口封閉,並且停止Apache以及所有的用戶進程的方法實現服務器的準安全
狀態。最安全的狀態是到服務器的Console上面操作,並且拔掉網線。
2.修改MySQL的登錄設置:
登陸設置保存在文件my.cnf中。該文件位於根目錄下的文件夾etc下mysql文件下(這是發生在二進制安裝的情況下,若非此情況,文件my.cnf在文件夾etc下)。關於目錄的切換見文檔“linux下文件目錄相關命令.docx”,使用vi(或vim)編輯器進行編輯。Vi編輯器的使用見網頁
(http://www.eepw.com.cn/article/48018.htm)或文檔“linux下vi編輯器使用手冊.docx”
切換到my.cnf所在目錄之後,輸入“sudovi my.cnf”即可進行編輯;輸入“vimy.cnf”雖然也能打開,但是是隻讀模式,不能保存所做的修改,除非使用管理員賬戶登錄linux系統。
在[mysqld]的段末加上一句(若無此段,則需要添加這樣的一個段):skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存並且退出vi。
3.重新啓動mysqld
手動停止mysql,在手動啓動mysql。即分別輸入命令“sudostop mysql”,“sudostart mysql”。
4.登錄並修改MySQL的root密碼
以root賬戶登錄,然後修改對應的密碼,例如:輸入命令:
“update mysql.user setpassword=PASSWORD(“knowledge”) where user=”root”;”
“flush privileges;”
“quit;”
這裏表示將原來所有root用戶密碼全部設置爲”knowledgee”。注意:這裏必須使用PASSWORD函數,這個函數保證了在登錄時輸入的密碼爲”knowledge”,否則linux會將”knowledge”作爲將初始密碼串加密後得到的結果直接進行保存,這樣,在登錄時輸入”knowledge”是不能通過驗證的。
Flushprivileges 將刷新所做的修改,否則,做的修改不會生效。
5.將MySQL的登錄設置修改回來
用同樣的方式打開文件my.cnf。
刪除之前所做的修改。
保存並且退出vi。
6.重新啓動mysqld
手動停止mysql,在手動啓動mysql。即分別輸入命令“sudostop mysql”,“sudostart mysql”。
7、查看數據庫、表、列、存儲過程等信息命令——Show
STATUS指令
該指令(需要登錄之後才能使用此命令查看)可以用來查看當前數據庫的狀態信息,具體語法可以輸入指令:status–help進行查看。
如輸入:status可以查看版本等信息,其輸出類似如下:
SHOW指令
見(http://blog.knowsky.com/250872.htm)
SHOW 指令(‘[..]’裏的可選) ,指令結尾的“;”代表語句結束符,若一條語句書寫完畢,並且希望mysql立刻執行,那麼必須加上“;”。
#顯示mysql中所有數據庫的名稱
show databases;
#顯示mysql中的相關表
show tables [ from db_name];
#查看存儲過程狀態
show procedure status;
#顯示錶中列名稱
show columns from table_name [ fromdatabase_name ] ;
或showcolumns from database_name.table_name;
#顯示一個用戶的權限,顯示結果類似於grant 命令
show grants for user_name;
#顯示錶的索引
show index from table_name;
#顯示一些系統特定資源的信息,例如,正在運行的線程數量
show status [from db_name];
#顯示系統變量的名稱和值
show [ global] variables;
#顯示系統中正在運行的所有進程,也就是當前正在執行的查詢大多數用戶可以查看他們自己的進程,但是如果他們擁有process權限,就可以查看所有人的進程,包括密碼
show processlist;
#顯示當前使用或者指定的database中的每個表的信息信息包括表類型和表的最新更新時間
show table status;
#顯示服務器所支持的不同權限
show privileges;
#顯示create database 語句是否能夠創建指定的數據庫
show create database database_name;
#顯示create database 語句是否能夠創建指定的數據庫
show create table table_name;
#顯示安裝以後可用的存儲引擎和默認引擎
show engies;
#顯示innoDB存儲引擎的狀態
show innodb status;
#顯示BDB存儲引擎的日誌
show logs -----這個已經被遺棄了
#顯示最後一個執行的語句所產生的錯誤、警告和通知
show warnings;
#只顯示最後一個執行語句所產生的錯誤
show errors;
#顯示安裝後的可用存儲引擎和默認引擎
show [storage] engines;
查看數據庫端口號
(http://blog.chinaunix.net/uid-15463753-id-2847046.html)
登陸後運行如下命令即可查看數據庫端口號:
show variables like'port';
8、創建用戶、賦訪問權限、修改密碼
見(http://www.linuxidc.com/Linux/2008-01/10699.htm)
建議使用grant語法來創建新用戶:
grant 權限1,權限2,...權限non 數據庫名稱.表名稱to 用戶名@用戶地址identified by '連接口令';
權限1,權限2,...權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,...權限n被allprivileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用'%'表示從任何地址連接。
創建新用戶時,’連接口令’不能爲空,否則創建失敗。可以通過再次執行grant語句來實現對現有用戶權限信息的修改。
例如:
grant select on mysql.user todeepSearch@localhost identified by “deepSearch”;
flush privileges;
新建一個新用戶:deepSearch,密碼(口令)爲:deepSearch,登陸主機爲:localhost,其權限爲:對數據庫mysql中的表user有查詢權限。
若想修改,則可以再次執行grant語句:
grant select on mysql.db todeepSearch@localhost identified by “”;
flush privileges;
注意,此時deepSearch用戶增加了對數據庫mysql內表db的查詢權限,但同時,密碼被修改爲空。若要密碼不被修改,則需要每次指定相同的密碼。即密碼會在每次執行grant時被更新。“flushprivileges;”是必須要有的,因爲這一句用來刷新權限信息,否則所做的修改不會生效,即新用戶無法登陸,舊用戶的之前信息未真正更新。
可以通過向mysql的user表裏添加一條記錄或者使用grant語句來實現(當前的所有數據庫名稱、數據庫內所有表名稱、表的列名稱都可以通過show命令查看)。如添加一個deepSearch用戶,密碼爲deepSearch,登陸主機爲”localhost”。就可以如下書寫:
insert intomysql.user(host,user,password) values(“host”,“deepSearch”,PASSWORD(“deepSearch”));
flush privileges;
注意:這裏必須使用PASSWORD函數,這個函數保證了在登錄時輸入的密碼爲”deepSearch”,否則linux會將”deepSearch”作爲將初始密碼串加密後得到的結果直接進行保存,這樣,在登錄時輸入”deepSearch”是不能通過驗證的。
但是本方法並未制定新創建的用戶的權限,故需要進一步的設置其權限,即修改mysql.user表中新添加記錄的其他字段值。
9、數據定義、數據操作語句
詳見mysql官方語法(http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html)
11、數據的備份與恢復
導入外部數據文本:
1.執行外部的sql腳本
參見(http://blog.csdn.net/vebasan/article/details/7619911)
如需要執行當前目錄下的deepSearch文件夾下的input.sql文件裏的所有mysql語句,可以使用source命令或者\.命令,具體格式爲:\. <filename> | source <filename>。本例中應輸入如下命令:
source deepSearch/input.sql;
或者
\. deepSearch/input.sql
注意:使用此命令需要登錄到mysql中。
2.數據傳入命令 loaddata local infile "[文件名]"into table [表名];
備份數據庫:(dos下)
mysqldump --opt school>school.bbb
mysqldump -u [user] -p [password]databasename > filename (備份)
mysql -u [user] -p [password] databasename< filename (恢復)
12、外部IP無法訪問問題
(http://blog.csdn.net/xc635960736/article/details/7581342)
(此方案暫時無效,原因還在調查中)
設置mysql 的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 將其註釋掉,使得不再只允許本地訪問;或將其改爲bind-address =0.0.0.0。然後重啓mysql。接着再爲指定用戶賦予一定的訪問權限,使用grant命令,詳細見“8”。