Mysql基本安裝及其使用

       mysql AB  (MySQL有限公司)
由MySQL創始人和主要開發人創辦的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典創辦的。
sun<LAMP>
1、oracle
2、mysql  
3、SQL server
4、DB2                               IBM出口的一系列關係型數據庫管理系統
5、sybase

sql --結構化查詢語句
ANSI 2003 --國際標準化的結構化查詢
mysql mysql
T-sql    SQL
pl/sql oracle

mysql版本:
社區版(GA)
企業版

mysql3.23 mysql4.1 mysql5.1  mysql5.5

四種方法
1、通過二進制的方式安裝
1) rpm(redhat/mysql rpm)
2) mysql glbic

優點:安裝和維護都比較方便,不需要編譯。
缺點:可定製性差,可移植性差,一個系統上只能安裝一個mysql


2、通過源代碼編譯的安裝(mysql-xx.tar.gz)
5.1源碼安裝
5.5源碼安裝
優點:可定製性強(安裝可以根據用戶的需求,只安裝所需要的功能)
缺點:安裝複雜,所需要的時候比二進制的安裝要長得多


二進制的安裝:
1.redhat mysql(RPM) --光盤中mysql老舊,漏洞多,如果一定要使用此版本,請到紅帽的源碼目錄樹中下載最新版本
2.mysql AB  mysql(RPM) --mysql官方的RPM包,提供版本比較多,像suse/redhat/oracle linux
3.glibc mysql(二制軟件包) --mysql-xxx-glibc.tar.gz

優點:安裝使用時比較方便,升級簡單
缺點:一個系統只能安裝一個mysql,可定製性差,不靈活。

源碼安裝:
1.source mysql(5.1)  ./configure && make && make install
2.source mysql(5.5)  cmake && make && make install

rpm包安裝
1、redhat RPM
# yum list |grep mysql
mysql.x86_64                    --客戶端                          
mysql-libs.x86_64                            --庫包(類似於dll),可以讓第三方程序調用這些庫文件,擴充軟件的功能。  
mysql-server.x86_64                        --服務器軟件包              
mysql-bench.x86_64                --壓力測試工具包                  
mysql-connector-odbc.x86_64         --連接器                                      
mysql-devel.x86_64                         --開發包                          
mysql-test.x86_64                            --測試數據庫包      

1、安裝軟件
#yum -y install mysql-server mysql
service mysqld start




2、建立配置文件/etc/my.cnf
# vim /etc/my.cnf

[mysqld] <---[進程名字] 對應的配置給予對應的進程名字的進程使用,mysqld是服務端
datadir=/data <---數據庫用於存放數據的數據文件所在路徑
socket=/data/mysqld.sock <---套接字文件,服務啓動的時候生成,服務正常關閉就刪除該文件
user=mysql <--- 服務運行的有效身份
port=3306 <--- tcp協議監聽的端口



初始化 MySQL 數據庫: Installing MySQL system tables...
OK
Filling help tables...
OK
..... 看到兩個ok說明成功
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !   <---提醒別忘機給root用戶改密碼
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password' <---改密碼的命令
/usr/bin/mysqladmin -u root -h rhel6.example.com password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &      <---啓動數據的方式之一(最通用的方式)

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                          [確定]
正在啓動 mysqld:                                          [確定]


驗證是啓動成功
# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  8009 mysql   10u  IPv4 164225      0t0  TCP *:mysql (LISTEN)





glibc安裝:
# service mysql stop --先停止RPM包安裝的mysqld
# tar xzvf mysql-5.5.25-linux2.6-x86_64_glibc.tar.gz -C /opt

參照安裝文檔
INSTALL-BINARY
******************************************************
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /opt
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql.glbic
# vim /etc/init.d/mysql.glibc
basedir=/opt/mysql-glibc
*******************************************






----------------------
源碼安裝5.1:
# pkill mysql
# tar xzvf mysql-5.1.58.tar.gz -C /usr/local/src/
# cd /usr/local/src/mysql-5.1.58/
# ./configure --prefix=/opt/mysql-source --with-big-tables --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-charset=utf8 --with-extra-charsets=all
--with-big-tables 64系統支持4G的大表
--with-mysqld-ldflags=-all-static 服務端使用靜態庫的方式編譯
--with-client-ldflags=-all-static 客戶端使用表態庫的方式編譯
官方稱可提升mysql5%-10%左右的性能,靜態編譯就是把程序要用到的一些庫文件給編譯到程序裏,那麼調用方便,當然編譯軟件的體積會大一點。
--with-charset=utf8 --指定默認的語言編碼utf8
--with-extra-charsets=all --指定擴展的語言編碼
# make && make install

# cd /opt/mysql-source/
# chown mysql.mysql . -R
# mv /etc/my.cnf /etc/my.cnf.bak.bak
# ./bin/mysql_install_db --user=mysql
# chown root . -R
# chown mysql var -R
# cp share/mysql/mysql.server /etc/init.d/mysql.souce
# vim /etc/init.d/mysql.souce
basedir=/opt/mysql-source
datadir=/opt/mysql-source/var
-----------------------
源碼安裝mysql-5.5:
1.安裝cmake
# tar xzvf cmake-2.8.5.tar.gz
# cd cmake-2.8.5
# ./configure && make &&make install


2.安裝mysql
shell> cmake . -L   # overview等於./configure --help
shell> cmake . -LH  # 查看簡約的幫助,相比上一步有更詳細一點的選項說明
shell> cmake . -LAH # 查看所有的配置選項,包括選項的解釋說明
shell> ccmake .     #僞圖形界來配置軟件

shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql \ --指定安裝路徑
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ --啓用innodb存儲引擎
-DENABLED_LOCAL_INFILE=1 \ --允許通過本地導入數據
-DDEFAULT_CHARSET=utf8 \ --指定默認的語言編碼
-DEXTRA_CHARSETS=all \ --擴展語言編碼
-DDEFAULT_COLLATION=utf8_general_ci \ --排序語言編碼
-DSYSCONFDIR=/opt/mysql/etc \ --配置文件的目錄
-DMYSQL_DATADIR=/data \ --數據目錄
-DMYSQL_UNIX_ADDR=/data/mysql.sock \ --socket目錄


shell> make && make install
shell> cd /opt/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql.server
-------------------------
在同一臺機器上啓動多個mysql實例:

mysql服務器的組成
1、mysql程序(mysqld)-運行->實例
2、數據庫(硬件,文件)


mysql啓動時需要的因素:
mysql rpm 3306 /data1 /data1/my.cnf  /data1/pidfile /data1/mysql.sock
glibc mysql 3307 /data2 /data2/my.cnf  /data2/pidfile /data2/mysql.sock
source mysql 3308 /data3 /data3/my.cnf  /data3/pidfile /data3/mysql.sock
source mysql 3309 /data4 /data4/my.cnf  /data4/pidfile /data4/mysql.sock

mysqld服務端加載配置文件的順序:[mysqld]
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

查詢加載順序:
# mysqld --verbose --help


mysql客戶端命令執行時加載配置文件的順序:([client] | [mysql])
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

查詢加載順序:
# mysql --help

--配置文件在加載,默認所有的路存在配置文件都會被加載,而且如果每個配置文件中選有衝突,後加載配置文件會覆蓋先載的配置文件。


# mkdir /{data1,data2,data3,data4}
# chown mysql.mysql /{data1,data2,data3,data4}
# chmod 700 /{data1,data2,data3,data4} -R

# /usr/bin/mysql_install_db --user=mysql --datadir=/data1


# /opt/mysql-glibc/scripts/mysql_install_db --user=mysql --datadir=/data2 --basedir=/opt/mysql-glibc/

# /opt/mysql-source5.1/bin/mysql_install_db --user=mysql --datadir=/data3 --basedir=/opt/mysql-source5.1

# /opt/mysql-source5.5/bin/mysql_install_db --user=mysql --datadir=/data4 --basedir=/opt/mysql-source5.5
-------------
# vim /data1/my.cnf
[client]
port            = 3306
socket          = /data1/mysql.sock


[mysqld]
port=3306
datadir=/data1
socket=/data1/mysql.sock
pid-file=/data1/mysqld.pid


# /usr/bin/mysqld_safe --defaults-file=/data1/my.cnf &
# netstat -tnlp |grep 3306
tcp        0      0 :::3306                     :::*                        LISTEN      10348/mysqld      
-------------------------------------
# vim /data2/my.cnf
[client]
port            = 3307
socket          = /data2/mysql.sock

[mysqld]
datadir=/data2
basedir=/opt/mysql-glibc/
socket=/data2/mysql.sock
pid-file=/data2/mysqld.pid
port=3307

# /opt/mysql-glibc/bin/mysqld_safe --defaults-file=/data2/my.cnf &
# netstat -tnlp |grep 3307
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      10453/mysqld
--------------------------------
# vim /data3/my.cnf
[client]
port            = 3308
socket          = /data3/mysql.sock

[mysqld]
datadir=/data3
basedir=/opt/mysql-source5.1
socket=/data3/mysql.sock
pid-file=/data3/mysqld.pid
port=3308


#/opt/mysql-source5.1/bin/mysqld_safe --defaults-file=/data3/my.cnf &
# netstat -tnlp |grep 3308
tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      10561/mysqld      
--------------------
# vim /data4/my.cnf
[client]
port            = 3309
socket          = /data3/mysql.sock

[mysqld]
datadir=/data4
basedir=/opt/mysql-source5.5
socket=/data4/mysql.sock
pid-file=/data4/mysqld.pid
port=3309


#/opt/mysql-source5.5/bin/mysqld_safe --defaults-file=/data4/my.cnf &
# netstat -tnlp |grep 3309
tcp        0      0 0.0.0.0:3309                0.0.0.0:*                   LISTEN      10598/mysqld      
--------------------
本地是使用socket文件來連接mysql
# mysql -S /data1/mysql.sock
# mysql -S /data2/mysql.sock
# mysql -S /data3/mysql.sock
# mysql -S /data4/mysql.sock

遠程連接mysql使用是tcp/ip
# mysql -h127.0.0.1 -P 3306
# mysql -h127.0.0.1 -P 3307
# mysql -h127.0.0.1 -P 3308
# mysql -h127.0.0.1 -P 3309
------------------
登錄mysql服務器的方法:
/opt/mysql-glibc/bin/mysql --不指定任何參數的時候,默認連接/tmp/mysql.sock
# /opt/mysql-glibc/bin/mysql -S /tmp/mysql.sock  --明確指定連接的socket
# /opt/mysql-glibc/bin/mysql -h127.0.0.1 --通過TCP/IP連接mysql
以上三種方式使用系統當前登錄用戶($username@'localhost'),密碼都爲空.

指定用戶名和密碼:
# mysql -uroot -p123 -h127.0.0.1
# mysql -uroot -p123 -S /tmp/mysql.sock


mysql> set password for 'root'@'127.0.0.1'=password('123')
mysql> flush privileges;


mysql啓動總結:
1)第一種方式,通過啓動腳本來啓動(/etc/init.d/xxx-->basedir-->./bin/mysqld_safe)
service xxx start
/etc/init.d/xxx start

2)直接使用mysqld_safe方式來啓動
# cd $basedir
# ./bin/mysqld_safe &



mysql shell的使用:
獲取當前mysql終端的使用幫助:
mysql> \h
mysql> help
mysql> ?

mysql> help 命令
mysql> ? 命令
--簡單的命令使用信息
mysql> help contents 查看幫助總目錄


connect  連接數
mysql> show processlist;

delimiter --修改結束符


edit --編輯最後一條命令歷史

pager   --分頁  
mysql> pager less
PAGER set to 'less'

notee       --不雙向重定向
mysql> tee /tmp/mysql.xx

prompt      --修改提示符
mysql> prompt [mysql]
prompt [mysql \u@\h]

rehash --自動補全表或者列的路徑

source  --調用外部sql語句

mysql> status --查看mysql的狀態

system          外部調用shell命令

use                 進入數據庫


通過mysql的返回編碼查看發生了什麼錯誤。
# perror 13 --根據數據庫返回的錯誤編碼查詢錯誤信息



------------------------------
mysql/windows客戶端(圖形/字符)

linux mysql客戶端
#mysql -uroot -p -e "show databases;" --linux
# mysql -uroot -p -h127.0.0.1                    --使用tcp連接
# mysql -uroot -p -S /tmp/mysql.sock      --使用套接字連接


socket(本地連接):
/path1/path2/mysql -S /xx/xx/mysql.sock -u username -p password
/path1/path2/mysql --socket=/xx/xx/mysql.sock -u username -p password

network(tcp):
/path1/path2/mysql -h mysql_server_ip -P port_number -u username -p password

windows客戶端:
sqlyog --windows商業mysql客戶

1.ssh-→ mysql(localhost:port)   username:root  password:xxx  
2.mysql> CREATE USER 'root'@'192.168.0.252' IDENTIFIED BY 'mypass';

shell-->mysql -e --> mysqlserver-->shell

# mysql -h127.0.0.1 -P3308 -uroot -p123 -s -N -e "select user,password,host from mysql.user;"
-h 主機名
-u 用戶名
-p 密碼
-P 端口

-s 去除邊框
-S 後面指定是服務端socket
-e 在shell中執行mysql中的命令
-N 去除標題
-H 使用html格式導出
-X 使用XML的格式導出
更多的選項請參考:
# mysql --help

-------------------------
mysqladmin --管理mysql服務器(你當前登錄數據的用戶必須管理員權限)
Administration program for the mysqld daemon.
Usage: mysqladmin [OPTIONS] command command....


密碼操作相關的:
# mysqladmin -S /data1/mysql.sock password '123' --設置密碼
# mysqladmin -S /data2/mysql.sock password '456'
# mysqladmin -S /data3/mysql.sock password '789'
# mysqladmin -hserver12.example.com -uroot  password '123'; --爲不同用戶的後綴設置密碼
error
#mysqladmin -uroot  -S /data2/mysql.sock password '456'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

#mysqladmin -uroot -p -S /data2/mysql.sock password '456'

# mysqladmin -uroot -p123 -S /mysql/data3/mysql.sock password 'redhat' --更改密碼

安全關閉數據庫服務:
# /etc/init.d/mysql stop
# mysqladmin -uroot -predhat -S /data1/mysql.sock shutdown --關閉數據庫服務器,只有這個命令才能安全關閉數據庫

庫的操作:
# mysqladmin -uroot -predhat -S /data1/mysql.sock create testbb2 --新建數據庫
# mysqladmin -uroot -predhat -S /data1/mysql.sock drop testbb2 --刪除數據庫

使用mysqladmin查看連接傳話的線程列表:
# mysqladmin -uroot -predhat processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host      | db | Command | Time | State | Info             |
+----+------+-----------+----+---------+------+-------+------------------+
| 2  | root | localhost |    | Query   | 0    |       | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+

殺死某個會話:
# mysqladmin -uroot -p456 -S /data2/mysql.sock kill 3


測試數據庫服務是否正常開啓:
# mysqladmin -uroot -p789 ping -c 3 -i 1
mysqld is alive
mysqld is alive
mysqld is alive






--------------------------
mysqlimport --從文件導入數據至數據庫
# mysql -uroot -p456 -S /data2/mysql.sock -e 'CREATE TABLE  test.imptest(id INT, name VARCHAR(30))'
# vim imptest.txt
1       test1
2       test2
3       test3
4       test4
5       test5
6       test6

# mysqlimport -uroot -p456 --local  -S /data2/mysql.sock test imptest.txt



---------------------------
基本SQL操作:
mysql> show databases; --顯示所有的數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> use test; --進入test數據庫

mysql> select database(); --顯示當前所在的數據庫
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)


mysql> show tables; --查看當前庫中有哪些表
+----------------+
| Tables_in_test |
+----------------+
| imptest        |
+----------------+
1 row in set (0.00 sec)

mysql> select * from test.imptest; --查詢當前庫中imptest表中的所有的內容
Empty set (0.00 sec)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章