濮阳杆衣贸易有限公司

主頁 > 知識庫 > CentOS下安裝MySQL5.6.10和安全配置教程詳解

CentOS下安裝MySQL5.6.10和安全配置教程詳解

熱門標簽:手機外呼系統(tǒng)違法嗎 南通電銷外呼系統(tǒng)哪家強 如何選擇優(yōu)質的外呼系統(tǒng) 清遠申請400電話 東莞外呼企業(yè)管理系統(tǒng) 桂林云電銷機器人收費 沈陽智能外呼系統(tǒng)供應商 地圖簡圖標注 谷歌地圖標注位置圖解

注:以下所有操作都在CentOS 6.5 x86_64位系統(tǒng)下完成。

#準備工作#

在安裝MySQL之前,請確保已經(jīng)使用yum安裝了以下各類基礎組件(如果系統(tǒng)已自帶,還可以考慮yum update下基礎組件):

gcc
cmake
openssl+openssl-devel
pcre+pcre-devel
bzip2+bzip2-devel
libcurl+curl+curl-devel
libjpeg+libjpeg-devel
libpng+libpng-devel
freetype+freetype-devel
php-mcrypt+libmcrypt+libmcrypt-devel
libxslt+libxslt-devel
gmp+gmp-devel
libxml2+libxml2-devel
mhash
ncurses+ncurses-devel
xml2

然后創(chuàng)建mysql的用戶組和用戶,并且不允許登錄權限:

# id mysql
id: mysql:無此用戶
# groupadd mysql
# useradd -g mysql -s /sbin/nologin mysql
# id mysql
uid=500(mysql) gid=500(mysql) 組=500(mysql)

#MySQL的安裝#

給MySQL的安裝準備目錄:

# mkdir -p /data/mysql/data
# chown -R mysql:mysql /data/mysql

開始源碼安裝MySQL:

# cd /usr/local/src
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz
# tar zxf mysql-5.6.10.tar.gz
# cd mysql-5.6.10
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.10 -DSYSCONFDIR=/usr/local/mysql-5.6.10/etc -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.10/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DMYSQL_DATADIR=/data/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
...
CMake Warning:
Manually-specified variables were not used by the project:
MYSQL_USER
-- Build files have been written to: /usr/local/src/mysql-5.6.10
# make  make install
# mkdir -p /usr/local/mysql-5.6.10/etc
# mkdir -p /usr/local/mysql-5.6.10/tmp
# ln -s /usr/local/mysql-5.6.10/ /usr/local/mysql
# chown -R mysql:mysql /usr/local/mysql-5.6.10
# chown -R mysql:mysql /usr/local/mysql

給當前環(huán)境添加MySQL的bin目錄:

# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
$ source /etc/profile

執(zhí)行初初始化配置腳本并創(chuàng)建系統(tǒng)自帶的數(shù)據(jù)庫和表:

# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data
...
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 !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h iZ94mobdenkZ password 'new-password'
Alternatively you can run:
./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 . ; ./bin/mysqld_safe 
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the ./bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
WARNING: Found existing config file ./my.cnf on the system.
Because this file might be in use, it was not replaced,
but was used in bootstrap (unless you used --defaults-file)
and when you later start the server.
The new default config file was created as ./my-new.cnf,
please compare it with your file and take the changes you need.
WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server

注:由于MySQL在啟動的時候,會先去/etc/my.cnf找配置文件,如果沒有找到則搜索$basedir/my.cnf,也即/usr/local/mysql-5.6.10/my.cnf,所以必須確保/etc/my.cnf沒有存在,否則可能導致無法啟動。

實際操作上發(fā)現(xiàn)系統(tǒng)上存在該文件,所以這里可能需要將該文件先備份改名,然后再根據(jù)上面的配置寫配置文件:

# mv /etc/my.cnf /etc/my.cnf.bak
# vim /usr/local/mysql-5.6.10/my.cnf
[mysqld]
basedir=/usr/local/mysql-5.6.10
datadir=/data/mysql/data
socket=/usr/local/mysql-5.6.10/tmp/mysql.sock
user=mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

修改MySQL用戶root的密碼,這里使用mysqld_safe安全模式啟動:

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking 
[1] 3970
[root@iZ94mobdenkZ ~]# 141230 19:02:31 mysqld_safe Logging to '/data/mysql/data/centos.err'.
141230 19:02:32 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data

這個時候已經(jīng)啟動了mysqd_safe安全模式,另開一個窗口作為客戶端連入MySQL服務器:

# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.10 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
mysql> update user set password=password('yourpassword') where user='root';
mysql> flush privileges;
mysql> exit;

修改完畢之后使用kill把mysqld_safe進程殺死:

# ps aux | grep mysql
root 3970 0.0 0.2 106308 1492 pts/1 S 19:02 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking
mysql 4143 0.1 18.0 558280 90316 pts/1 Sl 19:02 0:00 /usr/local/mysql-5.6.10/bin/mysqld --basedir=/usr/local/mysql-5.6.10 --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql-5.6.10/lib/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/data/mysql/data/centos.err --pid-file=/data/mysql/data/centos.pid --socket=/usr/local/mysql-5.6.10/tmp/mysql.sock
root 4313 0.0 0.1 103252 836 pts/0 S+ 19:05 0:00 grep mysql
# kill -9 3970
# kill -9 4143

或者回到剛才啟動mysqld_safe的窗口ctrl+c將進程殺死也行。

復制服務啟動腳本:

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld

設置開機啟動MySQL服務并正常開啟MySQL服務(非必要項):

# chkconfig mysqld on
# service mysqld
Usage: mysqld {start|stop|restart|reload|force-reload|status} [ MySQL server options ]
# service mysqld start
Starting MySQL.

以后就可以直接通過service mysqld命令來開啟/關閉MySQL數(shù)據(jù)庫了。

最后,建議生產(chǎn)環(huán)境下運行安全設置腳本,禁止root用戶遠程連接,移除test數(shù)據(jù)庫和匿名用戶等:

# /usr/local/mysql-5.6.10/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):

注:上面輸入的root密碼指的是前面設置的MySQL的root賬戶的密碼。

至此,MySQL數(shù)據(jù)庫已經(jīng)安裝完畢。

#MySQL的安全配置#

1、確保啟動MySQL不能使用系統(tǒng)的root賬號,必須是新建的mysql賬號,比如:

# mysqld_safe --user=mysql

2、MySQL安裝好運行初始化數(shù)據(jù)庫后,默認的root賬戶密碼為空,必須給其設置一個密碼,同時保證該密碼具有較高的安全性。比如:

mysql> user mysql;
mysql> update user set password=password('yourpassword') where user='root';
mysql> flush privileges;

3、刪除默認數(shù)據(jù)庫及用戶:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> drop daabase test;
mysql> use mysql;
mysql> select host,user from user;
+--------------+------+
| host | user |
+--------------+------+
| 127.0.0.1 | root |
| ::1 | root |
| centos | |
| centos | root |
| localhost | |
| localhost | root |
+--------------+------+
mysql> delete from user where not(host='localhost' and user='root');
mysql> flush privileges;

注:上面的user表中的數(shù)據(jù)可能會有所不同。

4、當開發(fā)網(wǎng)站連接數(shù)據(jù)庫的時候,建議建立一個用戶只針對某個庫有update/select/delete/insert/drop table/create table等權限,減小某個項目的數(shù)據(jù)庫的用戶名和密碼被竊取后造成其他項目受影響,比如:

mysql>create database yourdbname default charset utf8 collate utf8_general_ci;
mysql>create user 'yourusername'@'localhost' identified by 'yourpassword';
mysql> grant select,insert,update,delete,create,drop privileges on yourdbname.* To 'yourusername'@localhost identified by 'yourpassword';

5、數(shù)據(jù)庫文件所在的目錄不允許未經(jīng)授權的用戶訪問,需要控制對該目錄的訪問,比如:

# chown -R mysql:mysql /data/mysql/data
# chmod -R go-rwx /data/mysql/data

以上所述是小編給大家介紹的CentOS下安裝MySQL5.6.10和安全配置教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • CentOS 6.4下編譯安裝MySQL5.6.14教程
  • CentOS 7.2.1511 編譯安裝Nginx1.10.1+MySQL5.6.33+PHP5.6.26運行環(huán)境
  • CentOS6.5下RPM方式安裝mysql5.6.33的詳細教程
  • CentOS 7.0編譯安裝lnmp教程(Nginx1.6.0+MySQL5.6.19+PHP5.5.14)
  • CentOS 6.6服務器編譯安裝lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3)
  • 64位CentOs7源碼安裝mysql-5.6.35過程分享

標簽:重慶 內蒙古 成都 臨沂 天津 常德 貴州 湖州

巨人網(wǎng)絡通訊聲明:本文標題《CentOS下安裝MySQL5.6.10和安全配置教程詳解》,本文關鍵詞  CentOS,下,安裝,MySQL5.6.10,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《CentOS下安裝MySQL5.6.10和安全配置教程詳解》相關的同類信息!
  • 本頁收集關于CentOS下安裝MySQL5.6.10和安全配置教程詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    京山县| 农安县| 乌鲁木齐县| 武平县| 惠州市| 长顺县| 曲阳县| 涟源市| 宜城市| 宣威市| 鹤峰县| 二连浩特市| 鹰潭市| 枣强县| 精河县| 宿州市| 新疆| 泰和县| 西和县| 广灵县| 台江县| 奇台县| 宣化县| 扶余县| 安阳县| 浙江省| 棋牌| 长汀县| 盐城市| 晋城| 错那县| 兴海县| 漾濞| 绥宁县| 东阳市| 叶城县| 正安县| 泰兴市| 舞阳县| 六枝特区| 文安县|