默認安裝後空密碼,以mysqladmin命令設置密碼:php
mysqladmin -uroot password "password"html
Mysql命令設置密碼:mysql
mysql> set password for root@localhost=password('password);程序員
更改密碼:web
update mysql.user set password=password('password') where user='root';flush privileges;sql
2.刪除默認的數據庫和用戶shell
drop database test;use mysql;delete from db;delete from user where not(host="localhost" and user="root");flush privileges;數據庫
3. 更改默認root帳號名稱:apache
update mysql.user set user="admin" where user="root";flush privileges;centos
4. 本地文件安全:
set-variable=local-infile=0
5. 禁止遠程鏈接mysql,遠程管理可經過phpmyadmin,編輯my.cnf在[mysqld]添加:
skip-networking
6.最小權限用戶:
create database db1;grant select,insert,update,delete,create,drop privileges on database.* to user@localhost identified by 'passwd';
7. 限制普通用戶瀏覽其它數據庫,編輯my.cnf在[mysqld]添加:
--skip-show-database
8.快速修復MySQL數據庫
修復數據庫
mysqlcheck -A -o -r -p
修復指定的數據庫
mysqlcheck -o -r database -p
9.跟據內存的大小選擇MySQL的配置文件:
my-small.cnf # > my-medium.cnf # 32M - 64Mmy-large.cnf # memory = 512Mmy-huge.cnf # 1G-2G
my-innodb-heavy-4G.cnf # 4GB
----------------------------------------------------------------------------
更改Apache默認網站目錄
而後把你的項目移到配置好的目錄下便可。
---------------------------------------------------------------------------------------------------------
Apache安全配置
ServerTokens OS 修改成:ServerTokens Prod (在出現錯誤頁的時候不顯示服務器操做系統的名稱)
ServerSignature On 修改成:ServerSignature Off(不回顯apache版本信息)
刪除默認的頁面,防止泄露服務器信息
將Options Indexes FollowSymLinks改成Options -Indexes FollowSymLinks
DirectoryIndex index.html
爲apache單獨創建一個運行帳戶及帳戶組,並在httpd.conf配置
User apacheGroup apache
取消apache運行帳戶對網站目錄的寫入權限,上傳目錄除外,其餘非網站目錄儘可能不給權限
取消掉了運行帳戶對sh等的執行權限後可以防止webshell經過默認的sh執行命令
<Directory "/var/www/html/aaa"> <FilesMatch ".(php|php5)$"> Deny from all </FilesMatch> </Directory>
<Directory "/var/www/html/aaa"> Deny from all </Directory>
<Directory "/var/www/html/aaa"> Order Deny,Allow Deny from all Allow from 192.168.1.111 </Directory>
<Files ~ ".txt$"> Order allow,deny Deny from all </Files>
這樣能夠防止一些直接掃描80端口的黑客
Listen 12345
AllowOverride All改成AllowOverride None
------------------------------------------------------------------------------------------------------------------------
php.ini的安全優化
例1:鏈接到本機上的MYSQL。
首先在打開DOS窗口,而後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼,若是剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車便可進入到MYSQL中了,MYSQL的提示符 是:mysql>。
例2:鏈接到遠程主機上的MYSQL。假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u與root能夠不用加空格,其它也同樣)
MySQL默認沒有密碼,安裝完畢增長密碼的重要性是不言而喻的。
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
四、啓動
MySQL安裝完成後啓動文件mysql在/etc/init.d目錄下,在須要啓動時運行下面命令便可。
[root@test1 init.d]# /etc/init.d/mysql start
/usr/bin/mysqladmin -u root -p shutdown
[root@test1 local]# /sbin/chkconfig –list
[root@test1 local]# /sbin/chkconfig – add mysql
[root@test1 local]# /sbin/chkconfig – del mysql
MySQL默認的數據文件存儲目錄爲/var/lib/mysql。
假如要把目錄移到/home/data下須要進行下面幾步:
cd /home mkdir data
mysqladmin -u root -p shutdown
mv /var/lib/mysql /home/data/
這樣就把MySQL的數據文件移動到了/home/data/mysql下
若是/etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/並更名爲my.cnf)中。
命令以下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
爲保證MySQL可以正常工做,須要指明mysql.sock文件的產生位置。
修改socket=/var/lib/mysql/mysql.sock一行中等號右邊的值爲:/home/mysql/mysql.sock 。
操做以下:
vi my.cnf
(用vi工具編輯my.cnf文件,找到下列數據修改之)
# The MySQL server [mysqld]
port = 3306
#socket = /var/lib/mysql/mysql.sock(原內容,爲了更穩妥用「#」註釋此行)
socket = /home/data/mysql/mysql.sock (加上此行)
最後,須要修改MySQL啓動腳本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等號右邊的路徑改爲你如今的實際存放路徑:home/data/mysql。
[root@test1 etc]# vi /etc/rc.d/init.d/mysql
#datadir=/var/lib/mysql (註釋此行)
datadir=/home/data/mysql (加上此行)
/etc/rc.d/init.d/mysql start
或用reboot命令重啓Linux
若是工做正常移動就成功了,不然對照前面的7步再檢查一下。
注意:MySQL中每一個命令後都要以分號;結尾。
show databases;
剛開始時才兩個數據庫:mysql和test。MySQL庫很重要它裏面有MYSQL的系統信息,咱們改密碼和新增用戶,實際上就是用這個庫進行操做。
use mysql; //打開庫,學過FOXBASE的必定不會陌生吧
show tables;
describe 表名;
create database 庫名;
use 庫名;
create table 表名 (字段設定列表);
drop database 庫名;
drop table 表名;
delete from 表名;
select * from 表名;
例如:增長几條相關紀錄。
mysql> insert into name values('','張三','男','1971-10-01');
mysql> insert into name values('','白雲','女','1972-05-20');
可用select命令來驗證結果。
mysql> select * from name;
例如:將張三的出生年月改成1971-01-10
mysql> update name set csny='1971-01-10' where xm='張三';
例如:刪除張三的紀錄。
mysql> delete from name where xm='張三';
drop database if exists school; //若是存在SCHOOL則刪除
create database school; //創建庫SCHOOL
use school; //打開庫SCHOOL
create table teacher //創建表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ’深圳’,
year date
); //建表結束
//如下爲插入字段
insert into teacher values(’’,’glchengang’,’深圳一中’,’1976-10-10’);
insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’);
alter table dbname add column <字段名><字段選項>
alter table dbname change <舊字段名> <新字段名><選項>
alter table dbname drop column <字段名>