linux下mysql安裝相關

主要內容:

  • 安裝、卸載和配置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)或文檔“linuxvi編輯器使用手冊.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”。

發佈了42 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章