Windows上安裝MySQL也就不講了,基本上一路點擊下一步就可完成,現在講講Linux上布署Mysql,雖然也有很多網友列出了詳細的步驟,可能是因為版本過老的問題導致即使按照上面一步步來也還是出現不少問題,所以在此列出以作防坑指南。
至於Mysql是什么,能做什么那就不用介紹了,主要講安裝。
環境
CentOS7.0
Mysql-5.7.17
用root用戶安裝
關閉防火牆或讓涉及到的端口通過。
-A INPUT -m state --state NEW -m tcp -p tcp --sport 3306 -j ACCEPT -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 然后執行下面命令,使防火牆立即生效。 service iptables restart
下載
去官網下載 :http://dev.mysql.com/downloads/mysql/
下載后放進CentOS中的/usr/local/ 文件夾中,並解壓到當前文件中 /usr/local/mysql,Mysql有很多版本,沒選對可能也會出現各種問題。
准備系統帳戶
groupadd mysql #添加用戶組 useradd -r -g mysql -s /bin/false mysql #添加mysql用戶
安裝
進入/usr/local文件夾解壓mysql到當前文件夾:
cd /usr/local
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
重命名為mysql
mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql
配置相關的啟動配置文件
1、復制my.cnf 到 /etc/my.cnf (mysqld啟動時自動讀取)
cp my-default.cnf /etc/my.cnf
如果"/etc/"目錄下沒有my.cnf配置文件,請到"/usr/share/mysql/"下找到*.cnf文件,拷貝其中一個合適的配置文件到"/etc/"並改名為"my.cnf"中。命令如下:
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
2、解決一下亂碼問題
vi /etc/my.cnf
[mysql]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character_set_server=utf8
[client] #password = your_password port = 3306 socket = /usr/local/mysql/data/mysql.sock default-character-set=utf8 # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /usr/local/mysql/data/mysql.sock datadir=/usr/local/mysql/data skip-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M default-storage-engine=INNODB character_set_server=utf8 lower_case_table_names=1
3、復制mysql.server 到/etc/init.d/ 目錄下【目的想實現mysqld -install這樣開機自動執行效果】
【/etc/init.d/ 目錄,等效於注冊表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services 記錄有哪些服務】
cp mysql.server /etc/init.d/mysql (mysql是服務名)
4、修改 /etc/init.d/mysql 參數
vi /etc/init.d/mysql
給與2個目錄位置
basedir=/usr/local/mysql datadir=/usr/local/mysql/data port = 3306
4、給目錄/usr/local/mysql 更改擁有者
chown -R mysql:mysql /usr/local/mysql
在/etc/profile里面在文件末尾添添加一個路徑
初始化 mysql 的數據庫
mysql_install_db (老版本的做法)
新版本:
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
生成出一個data目錄,代表數據庫已經初始化成功
啟動mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql
檢查ps -ef|grep mysql
再給超級管理員上密碼:root
bin/mysqladmin -u root password 'root'
授權遠程訪問
mysql>grant all privileges on *.* to root@'%' identified by 'root';
mysql>flush privileges;
進入客戶端
登錄
mysql -u root -p
輸入密碼
擴展
mysql 下有好幾個結尾為cnf的文件,它們的作用分別是。
a、my-small.cnf:是為了小型數據庫而設計的。不應該把這個模型用於含有一些常用項目的數據庫。
b、my-medium.cnf:是為中等規模的數據庫而設計的。如果你正在企業中使用RHEL,可能會比這個操作系統的最小RAM需求(256MB)明顯多得多的物理內存。由此可見,如果有那么多RAM內存可以使用,自然可以在同一台機器上運行其它服務。
c、my-large.cnf:是為專用於一個SQL數據庫的計算機而設計的。由於它可以為該數據庫使用多達512MB的內存,所以在這種類型的系統上將需要至少1GB的RAM,以便它能夠同時處理操作系統與數據庫應用程序。
d、my-huge.cnf:是為企業中的數據庫而設計的。這樣的數據庫要求專用服務器和1GB或1GB以上的RAM。
這些選擇高度依賴於內存的數量、計算機的運算速度、數據庫的細節大小、訪問數據庫的用戶數量以及在數據庫中裝入並訪問數據的用戶數量。隨着數據庫和用戶的不斷增加,數據庫的性能可能會發生變化。
備注:這里我們根據實際情況,選擇了"my-medium.cnf"進行配置。
刪除空用戶,增強安全
目前為止我們都是以"root"的身份進行的,但是當我們切換至普通用戶登錄MySQL時,直接輸入"mysql"就進去了,我們剛才不是設置密碼了嗎?怎么就失效了呢?說明有空用戶存在。先用命令"exit"退出,在按照下面命令進行修正。
解決步驟如下:
以MySQL用戶"root"用密碼形式登錄。
mysql -u root -p
刪除空用戶,強烈建議。
mysql>delete from mysql.user where user='';
刷新權限表,以便可以使更改立即生效。
mysql>flush privileges;
輸入"exit",退出MySQL。
mysql>exit
再重新以"mysql"登錄測試
mysql
發現以"mysql"登錄已經失效,必須以"mysql –u root -p"才能登錄。