MySQL數(shù)據(jù)庫安全設(shè)置與注意事項小結(jié)
當(dāng)你第一次在機器上安裝MySQL時,mysql數(shù)據(jù)庫中的授權(quán)表是這樣初始化的:
你可以從本地主機(localhost)上以root連接而不指定口令。root用戶擁有所有權(quán)限(包括管理權(quán)限)
并可做任何事情。(順便說明,MySQL超級用戶與Unix超級用戶有相同的名字,他們彼此毫無關(guān)系。)
匿名訪問被授予用戶可從本地連接名為test和任何名字以test_開始的數(shù)據(jù)庫。匿名用戶可對數(shù)據(jù)庫做任
何事情,但無管理權(quán)限。
從本地主機多服務(wù)器的連接是允許的,不管連接的用戶使用一個localhost主機名或真實主機名。如:
% mysql -h localhost test
% mysql -h pit.snake.net test
你以root連接MySQL甚至不指定口令的事實只是意味著初始安裝不安全,所以作為管理員的你首先要做的
應(yīng)該是設(shè)置root口令,然后根據(jù)你設(shè)置口令使用的方法,你也可以告訴服務(wù)器重載授權(quán)表是它知道這個改
變。(在服務(wù)器啟動時,它重載表到內(nèi)存中而可能不知道你已經(jīng)修改了它們。)
對MySQL 3.22和以上版本,你可以用mysqladmin設(shè)置口令:
% mysqladmin -u root password yourpassword
對于MySQL的任何版本,你可以用mysql程序并直接修改mysql數(shù)據(jù)庫中的user授權(quán)表:
% mysql -u root mysql
mysql>UPDATE user SET password=PASSWORD("yourpassword") WHERE User="root";
如果你有MySQL的老版本,使用mysql和UPDATE。
在你設(shè)置完口令后,通過運行下列命令檢查你是否需要告訴服務(wù)器重載授權(quán)表:
% mysqladmin -u root status
如果服務(wù)器仍然讓你以root而不指定口令而連接服務(wù)器,重載授權(quán)表:
% mysqladmin -u root reload
在你設(shè)置了root的口令后(并且如果需要重載了授權(quán)表),你將需要在任何時候以root連接服務(wù)器時指定
下面是我整理的一些方法
首先讓mysql以普通用戶權(quán)限運行mysql。類似sqlserver的設(shè)置方法,如果不會的朋友可以使用工具實現(xiàn)。
1.設(shè)置或修改Mysql root密碼:
默認安裝后空密碼,以mysqladmin命令設(shè)置密碼:
登陸mysql:
mysqladmin -uroot password "password";
Mysql命令設(shè)置密碼:
mysql> set password for root@localhost=password('password);
更改密碼:
update mysql.user set password=password('password') where user='root';
flush privileges;
2.刪除默認的數(shù)據(jù)庫和用戶
drop database test;
use mysql;
delete from db;
delete from user where not(host="localhost" and user="root");
flush privileges;
3. 更改默認root賬號名稱:
flush privileges;
4. 本地文件安全:
5. 禁止遠程連接mysql,遠程管理可通過phpmyadmin,編輯my.cnf在[mysqld]添加:
6.最小權(quán)限用戶:
grant select,insert,update,delete,create,drop privileges on database.* to user@localhost identified by 'passwd';
7. 限制普通用戶瀏覽其它數(shù)據(jù)庫,編輯my.cnf在[mysqld]添加:
.快速修復(fù)MySQL數(shù)據(jù)庫
修復(fù)數(shù)據(jù)庫
mysqlcheck -A -o -r -p修復(fù)指定的數(shù)據(jù)庫
9.跟據(jù)內(nèi)存的大小選擇MySQL的配置文件:
my-small.cnf # > my-medium.cnf # 32M - 64M
my-large.cnf # memory = 512M
my-huge.cnf # 1G-2G
my-innodb-heavy-4G.cnf # 4GB
相關(guān)文章
MySQL查詢和篩選存儲的JSON數(shù)據(jù)的操作方法
MySQL是常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),為了支持非結(jié)構(gòu)化數(shù)據(jù)的存儲和查詢,MySQL引入了對JSON數(shù)據(jù)類型的支持,JSON是一種輕量級的數(shù)據(jù)交換格式,在現(xiàn)代應(yīng)用程序中得到了廣泛應(yīng)用,處理和存儲非結(jié)構(gòu)化數(shù)據(jù)變得越來越重要,本文給大家介紹mysql查詢JSON數(shù)據(jù)的相關(guān)知識,一起看看吧2024-01-01MySQL優(yōu)化之如何了解SQL的執(zhí)行頻率
MySQL 客戶端連接成功后,通過 show [session|global]status 命令 可以提供服務(wù)器狀態(tài)信息,也可以在操作系統(tǒng)上使用 mysqladmin extended-status 命令獲得這些消息2014-05-05詳解MySQL?substring()?字符串截取函數(shù)
MySQL 查詢數(shù)據(jù)有時候需要對數(shù)據(jù)項進行日期格式化或截取特定部分的操作,當(dāng)需要對字符串進行截取加工時用到了 substring() 函數(shù),這篇文章主要介紹了MySQL?substring()?字符串截取函數(shù),需要的朋友可以參考下2022-07-07使用MySQL的LAST_INSERT_ID來確定各分表的唯一ID值
MySQL數(shù)據(jù)表結(jié)構(gòu)中,一般情況下,都會定義一個具有‘AUTO_INCREMENT’擴展屬性的‘ID’字段,以確保數(shù)據(jù)表的每一條記錄都可以用這個ID唯一確定2011-08-08mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹
在MySQL中ROW_NUMBER()是一種用來生成行號的功能函數(shù),通常情況下它用于對查詢結(jié)果進行編號,以便方便地查看每行的位置,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹的相關(guān)資料,需要的朋友可以參考下2024-02-02mysql優(yōu)化連接數(shù)防止訪問量過高的方法
這篇文章主要介紹了mysql優(yōu)化連接數(shù)防止訪問量過高的方法,需要的朋友可以參考下2014-06-06