mysql -h localhost -u root -p
localhost:IP地址;
root:用戶名;
database:數(shù)據(jù)庫名(可以省略,如果有,跟在-p后面);
如果你發(fā)現(xiàn)這樣報mysql不是有效命令。那么有兩種解決方法:
我的電腦-->屬性-->高級-->環(huán)境變量-->系統(tǒng)變量-->配置一個Path變量,值為MySQL安裝文件夾里的bin目錄;
先用cd命令定位到MySQL安裝文件夾的根目錄,然后再輸入以上命令;
開始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client;
當(dāng)命令正確執(zhí)行后,會提示輸入密碼,登錄成功后的界面如上圖所示。
以上圖顯示出了歡迎信息,其中還有以下信息說明如下:
Commands end with; or g:
mysql命名行下的命令以分號(;)或"g"來結(jié)束,遇到這個結(jié)束符就開始執(zhí)行命令;
Your MySQL connection id is 24 Server version:5.0.67-community-nt
id表示MySQL的數(shù)據(jù)庫連接次數(shù),后面是社區(qū)版,版本號等信息;
Type help; or h for help
表示輸入help;或h可以看到幫助信息;
Type c to clear the buffer
遇到c就會清屏;
也可以在-p后直接輸入密碼,-p與密碼之間沒有空格。
MySQL Command Line Client:
MySQL的命令行客戶端;
MySQL Server Instance Config Wizard:
配置向?qū)В?/span>
Suninventory Registration:
注冊網(wǎng)頁鏈接;
啟動MySQL Server Instance Config Wizard能夠重新配置MySQL,但是要小心操作(這個留到第三部分)。
手動更改配置
用戶可以通過修改MySQL配置文件的方式來進(jìn)行配置。在配置之前需要對MySQL的文件有一定的了解。在MySQL Server 5.0目錄下,MySQL的數(shù)據(jù)文件安裝在MySQL Server 5.0data目錄下。
安裝根目錄中有4個文件夾和一些文件,這些目錄說明如下:
bin:
可執(zhí)行文件,如mysql.exe、mysqld.exe等;
include:
頭文件,如decimal.h、errmsg.h等;
lib:
庫文件,分兩個文件夾,分別是opt和plugin;
share:
字符集、語言信息;
在根目錄下,還有幾個.ini后綴的文件。其中只有my.ini是正在使用的。
my.ini:MySQL數(shù)據(jù)庫使用的配置文件,修改該文件即可修改配置;
my-huge.ini:適合超大型數(shù)據(jù)庫的配置文件;
my-large-ini:適合大型數(shù)據(jù)庫的配置文件;
my-medium.ini:適合中型數(shù)據(jù)庫的配置文件;
my-small.ini:適合小型數(shù)據(jù)庫的配置文件;
my-template.ini:配置文件的模板;
my-innodb-heavy-4G.ini:該配置文件只對InnoDB存儲引擎有效,而且服務(wù)器的內(nèi)存不能小于4G;
其中,my.ini的主要參數(shù)及說明如下:
client:客戶端參數(shù)
password:用戶的登錄密碼,密碼存在該文件中,登錄時可以不輸入;
port:MySQL數(shù)據(jù)庫端口,默認(rèn)端口是3306;
2. mysql客戶端參數(shù)
default-character-set:客戶端默認(rèn)字符集;如果希望支持中文,應(yīng)該設(shè)為utf8或gbk,默認(rèn)是latin1
3. mysqld服務(wù)器端參數(shù)
port:MySQL數(shù)據(jù)庫的端口,默認(rèn)是3306;
basedir:MySQL的安裝路徑;
datadir:MySQL數(shù)據(jù)文件的存儲位置;
default-character-set:服務(wù)器端字符集;
default-storage-engine:默認(rèn)存儲引擎;
sql-mode:SQL模式的參數(shù),通過這個參數(shù),可以設(shè)置檢驗(yàn)SQL語句的嚴(yán)格程序;
max_connections:參數(shù)表示允許同時訪問MySQL服務(wù)器的最大連接數(shù),有一個專為管理員保留;
query_cache_size:表示查詢時緩存的大小。緩存以前SELECT語句查詢過的信息;
table_cache:所有進(jìn)程打開表的總數(shù);
tmp_table_size:內(nèi)存中臨時表的最大值;
thread_cache_size:保留客戶端線程的緩存大??;
myisam_max_sort_file_size:重建索引時,允許的最大臨時文件的大小,默認(rèn)100G;
myisam_sort_buffer_size:重建索引時,最多能使用緩存的大??;
key_buffer_size:關(guān)鍵詞緩沖的大小,一般用于緩沖MyISM表的索引塊;
read_budder_size:MyiSAM全表掃描的緩沖大?。?/span>
read_rnd_buffer_size:排序好的數(shù)據(jù)存入的緩存區(qū)的大小;
sort_buffer_size:用于排序的緩存大??;
4. INNODB引擎參數(shù)
innodb_additional_mem_pool_size:附加的內(nèi)存池大小;
innodb_flush_log_at_trx_commit:參數(shù)設(shè)置提交日志的時機(jī)(設(shè)置1、提交后寫到磁盤上);
innodb_log_buffer_size:存儲日志數(shù)據(jù)的緩沖區(qū)大??;
innodb_thread_concurrency:在InnoDB存儲引擎允許的線程最大數(shù);
1. 文件介紹
bin:各種執(zhí)行文件;
data:日志文件和數(shù)據(jù)庫文件;
Docs:版權(quán)信息、MySQL的更新日志和安裝信息;
Embedded:前入職服務(wù)器文件;
include:頭文件;
lib:庫文件;
mysql-test:測試有關(guān)的文件;
scripts:Perl語言編寫的實(shí)用工具腳本;
share:字符集和語言信息;
sql-bench:數(shù)據(jù)庫性能比較的信息和基準(zhǔn)程序;
mysql文件夾下有多個ini文件,需要將其中一個復(fù)制到C:WINDOWS文JIANJIA下,并將其改名為my.ini。如果內(nèi)存充裕,可以選擇大的,如my-larage.ini拷貝到c:WINDOWS,文件夾并改名為my.ini。
在C:WINDOWS文JIANJIA下打開my.ini文件,在[mysqld]這個組中加入如下兩條記錄:
除此之外,還要加入一個組和一條記錄:
組的名稱為WindowsMySQLServer,意思是Windows操作系統(tǒng)下的MySQL服務(wù)。Server參數(shù)表示MySQL服務(wù)端程序。"C:/mysql/bin/mysqld.exe"就是幅度段程序。
4. 設(shè)置MySQL服務(wù)
配置文件沒問題了,只需要將MySQL服務(wù)端程序添加到系統(tǒng)服務(wù)中。
在控制臺輸入如下命令并執(zhí)行:
C:/mysql/bin/mysqld.exe -install
執(zhí)行此命令后,會出現(xiàn)一個DOS窗口一閃而過。說明此命令已經(jīng)執(zhí)行成功,MySQL成功添加到系統(tǒng)服務(wù)。
環(huán)境變量,也需要像文章開篇那樣配置,才能快速啟動。
啟動和關(guān)閉mysql服務(wù)的命令如下:
net start mysql
net stop mysql
如果是免安裝的MySQL,先應(yīng)該在DOS窗口執(zhí)行"c:/mysql/bin/mysqld.exe--remove"命令(假設(shè)安裝目錄是c:/mysql);當(dāng)此命令完成后,在刪除整個目錄,然后在刪除C:Windows目錄下的my.ini就徹底刪除MySQL免安裝版了。
MySQL用戶管理:MySQL分為普通用戶與root用戶。這兩種用戶的權(quán)限不一樣。
安裝MySQL時會自動安裝一個名為mysql的數(shù)據(jù)庫。mysql數(shù)據(jù)庫里面存儲的都是權(quán)限表。
1)User表
user表有39個字段。這些字段可以分為4類:
用戶列;
權(quán)限列;
安全列;
資源控制列;
2)用戶列
用戶列包括Host、User、Password,分別表示主機(jī)名、用戶名和密碼。登錄用的就是這個用戶名與密碼;
3)權(quán)限列
user表的權(quán)限列包括Select_priv、Insert_priv等以priv結(jié)尾的字段。
這些字段的值只有Y和N。Y表示該權(quán)限可以用到所有數(shù)據(jù)庫上;N表示該權(quán)限不能用到所有數(shù)據(jù)庫上;
通常,可以使用GRANT語句Wie用戶賦予一些權(quán)限,也可以通過Update語句更新user表的方式來設(shè)置權(quán)限;
不過,修改user表之后,一定要執(zhí)行一下FLUSH PRIVILEGES,否則可能會出現(xiàn)如下錯誤:
Error (1133): Can’t find any matching row in the user table
Update修改權(quán)限:
UPDATE user SET Select_priv = N
WHERE Host = %
GRANT賦予權(quán)限
4)安全列
user表的安全列有4個字段:
ssl_type;
ssl_cipher;
x509_issuer;
x509_subject;
ssl用于加密;x509標(biāo)準(zhǔn)可以用來標(biāo)識用戶。普通的發(fā)行版都沒有加密功能??梢允褂肧HOW VARIABLES LIKE have_openssl語句來查看是否具有ssl功能。如果取值為DISABLED,那么則沒有ssl加密功能。
5)資源控制列
user表的4個資源控制列是:
max_questions:每小時可以允許執(zhí)行多少次查詢;
max_updates:每小時可以允許執(zhí)行多少次更新;
max_connections:每小時可以建立多少連接;
max_user_connections:單個用戶可以同時具有的連接數(shù)。
默認(rèn)值為0,表示無限制。
db表存儲了某個用戶對一個數(shù)據(jù)庫的權(quán)限。
host表中存儲了某個主機(jī)對數(shù)據(jù)庫的操作權(quán)限,配合db表對給定主機(jī)上數(shù)據(jù)庫級操作權(quán)限做更細(xì)致的控制;但是很少用,新版本已經(jīng)取消了host表;
1)用戶列
db表的用戶列有3個字段:
Host:主機(jī)名;
Db:數(shù)據(jù)庫名;
User:用戶名;
2) 權(quán)限列
db表:
Create_routine_priv:是否具有創(chuàng)建存儲過程權(quán)限;
Alter_routine_priv:是否具有修改存儲過程權(quán)限;
user表中的權(quán)限是針對所有數(shù)據(jù)庫的,如果user表中的Select_priv字段取值為Y,那么該用戶可以查詢所有數(shù)據(jù)庫中的表;
如果為某個用戶值設(shè)置了查詢test表的權(quán)限,那么user表的Select_priv字段的取值為N。而這個SELECT權(quán)限則記錄在db表中。db表中的Select_priv字段的取值將會是Y。
用戶先根據(jù)user表的內(nèi)容獲取權(quán)限,然后再根據(jù)db表的內(nèi)容獲取權(quán)限。
3) tables_priv表和columns_priv表
tables_priv:可以對單個表進(jìn)行權(quán)限設(shè)置:
tables_priv表包含8個字段:
Host:主機(jī)名;
DB:數(shù)據(jù)庫名;
User:用戶名;
Table_name:表名
Table_priv:對表進(jìn)行操作的權(quán)限(Select,Insert,Update,Delete,Create,Drop,Grant,References,Index,Alter)
Column_priv:對表中的數(shù)據(jù)列進(jìn)行操作的權(quán)限(Select,Insert,Update,Rederences);
Timestamp:修改權(quán)限的事件
Grantor:權(quán)限的設(shè)置者
columns_priv:
可以對單個數(shù)據(jù)列進(jìn)行權(quán)限設(shè)置,有7個列,作用同上:
Host、Db、User、Table_name、Column_name、Column_priv、Timestamp。
MySQL權(quán)限分配是按照user表-> db表 -> table_priv表 -> columns_priv表的順序進(jìn)行分配的。
在數(shù)據(jù)庫系統(tǒng)中,先判斷user表中的值是否為Y,如果user表中的值是Y,就不需要檢查后面的表。如果user表為N,則一次檢查后面的表。
4) procs_priv表
procs_priv表可以對存儲過程和存儲函數(shù)進(jìn)行權(quán)限設(shè)置。
procs_priv表包含8個字段,分別是:
Host:主機(jī)名;
Db:數(shù)據(jù)庫名;
User:用戶名;
Routine_name:存儲過程或函數(shù)名稱;
Routine_type:類型(取值有:FUNCTION或PROCEDURE);
Proc_priv:擁有的權(quán)限(Execute:執(zhí)行;Alter Routine:修改;Grant:權(quán)限賦予);
Timestamp:字段存儲更新的時間;
Grantor:字段設(shè)置者;
其中登錄方式非常簡單,在這個地址:
http://www.cnblogs.com/kissdodog/p/4154068.html
在MySQL數(shù)據(jù)庫中,建立用戶有3種方式:
使用CREATE USER語句來創(chuàng)建新的用戶;
直接在mysql.user表中INSERT用戶;
使用GRANT語句來新建用戶;
1) CREATE USER
使用CREATE USER語句創(chuàng)建用戶,必須要擁有CREATE USER權(quán)限。其格式如下:
CREATE USER user[IDENTIFIED BY [PASSWORD] password],
[user[IDENTIFIED BY [PASSWORD] password]]...
示例:
CREATE USER admin@% IDENTIFIED BY admin
2) 用INSERT語句新建普通用戶
可以使用INSERT語句直接將用戶的信息添加到mysql.user表。但必須擁有mysql.user表的INSERT權(quán)限。
示例:
INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES(%,newuser1,PASSWORD(123456),,,)
執(zhí)行INSERT之后,要使用命令:
FLUSH PRIVILEGES
命令來使用戶生效。
3)用GRANT語句來新建普通用戶
用GRANT來創(chuàng)建新的用戶時,能夠在創(chuàng)建用戶時為用戶授權(quán)。但需要擁有GRANT權(quán)限。
語法如下:
GRANT priv_type ON database.table
TO user[IDENTIFIED BY [PASSWORD] password]
[,user [IDENTIFIED BY [PASSWORD] password]...]
priv_type:參數(shù)表示新yoghurt的權(quán)限;
databse.table:參數(shù)表示新用戶的權(quán)限范圍;
user:參數(shù)新用戶的賬戶,由用戶名和主機(jī)構(gòu)成;
IDENTIFIED BY關(guān)鍵字用來設(shè)置密碼;
password:新用戶密碼;
GRANT語句可以同時創(chuàng)建多個用戶。
GRANT SELECT ON *.* TO netUser@%
*.*與db.*的區(qū)別在于。*.*對所有數(shù)據(jù)庫生效,所以user表的SELECT會變?yōu)閅。而db.*user表為N,更改的是Db表。
2. 刪除普通用戶
1) DROP USER語句刪除普通用戶
需要擁有DROP USER權(quán)限。語法如下:
DROP USER user[,user]...
user是需要刪除的用戶,由用戶名(User)和主機(jī)名(Host)構(gòu)成。
DROP USER newuser1@%
2) DELETE語句刪除普通用戶
可以使用DELETE語句直接將用戶的信息從mysql.user表中刪除。但必須擁有對mysql.user表的DELETE權(quán)限。
DELETE FROM mysql.user WHERE Host = % AND User = admin
刪除完成后,一樣要FLUSH PRIVILEGES才生效。
3. 修改密碼
1) 使用mysqladmin命令來修改root用戶的密碼
語法:
mysqladmin -u -username -p password "new_password"
新密碼(new_password)必須用括號括起來,單引號會報錯。
示例:
(注:這個待驗(yàn)證,我怎么執(zhí)行都不成功?。?/span>
2) 修改user表
UPDATE user表的passwor字段的值,也可以達(dá)到修改密碼的目的;
UPDATE user SET Password = PASSWORD(123) WHERE USER = myuser
FLUSH PRIVILEGES后生效。
3) 使用SET語句來修改密碼
使用root用戶登錄到MySQL服務(wù)器后,可以使用SET語句來修改密碼:
修改自己的密碼,不需要用戶名
SET PASSWORD = PASSWORD("123");
修改其他用戶密碼:
SET PASSWORD FOR myuser@%=PASSWORD("123456")
FOR 用戶名@主機(jī)名
4)GRANT語句來修改普通用戶的密碼
使用GRANT語句修改普通用戶的密碼,必須擁有GRANT權(quán)限。
GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] password]
示例:
GRANT SELECT ON *.* TO test3@% IDENTIFIED BY 123
5)忘記密碼的解決方案
如果root用戶密碼丟失了,會給用戶造成很大的麻煩。但是,可以通過某種特殊方法登錄到root用戶下,然后修改密碼。
使用--skip-grant-tables選項(xiàng)啟動MySQL服務(wù)
該選項(xiàng)將使MySQL服務(wù)器停止權(quán)限判斷,任何用戶都能夠訪問數(shù)據(jù)庫。
在Windows操作系統(tǒng)下,使用mysqlid或mysqlid-nt來啟動MySQL服務(wù)。
mysqld命令:
mysqld --skip-grant-tables
mysqld-nt命令:
mysqld-nt --skip-grant-tables
net start mysql命令:
net start mysql --skip-grant-tables
登錄root用戶,并且設(shè)置新密碼
mysql -u root
必須使用UPDATE語句更新mysql數(shù)據(jù)庫下的user表,而不能使用SET語句,因?yàn)?-skip-grant-tables不能使用SET語句。
修改完密碼以后,F(xiàn)LUSH PRIVILEGES語句加載權(quán)限表,新密碼即生效。
2. 授權(quán)
GRANT語法如下:
GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] password]
[,user [IDENTIFIED BY [PASSWORD] password]]...
WITH with_option[with_option]
priv_type參數(shù)表示權(quán)限類型;
column_list:
參數(shù)表示權(quán)限作用于哪些列上,沒設(shè)置則位于整個表上;
user參數(shù)由用戶名和主機(jī)名構(gòu)成;
形式是"username@hostname";
IDENTIFIED BY參數(shù)用于為用戶設(shè)置密碼;
password:用戶新密碼;
WITH關(guān)鍵字后面帶有一個或多個with_option參數(shù)。有5個選項(xiàng):
GRANT OPTION:
被授權(quán)的用戶可以將這些權(quán)限賦予給別的用戶;
MAX_QUERIES_PER_HOUR count:
設(shè)置沒消失可以允許執(zhí)行count次查詢;
MAX_UPDATES_PER_HOUR count:
設(shè)置每個消失可以允許執(zhí)行count次更新;
MAX_CONNECTIONS_PER_HOUR count:
設(shè)置每小時可以建立count個連接;
MAX_USER_CONNECTIONS count:
設(shè)置單個用戶可以同時具有的count個連接數(shù);
示例:
GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] password]
[,user [IDENTIFIED BY [PASSWORD] password]]...
WITH with_option[with_option]
3. 收回權(quán)限
收回權(quán)限,就是取消某個用戶的某些權(quán)限。MySQL中使用REVOKE關(guān)鍵字來為用戶設(shè)置權(quán)限。
語法如下:
GRANT SELECT,UPDATE ON *.*
TO myuser@%
WITH GRANT OPTION;
收回全部權(quán)限的REVOKE語句的基本語法如下:
REVOKE ALL PRIVILEGES,GRANT OPTION FROM user[,user]...
示例:回收用戶myuser的SELECT權(quán)限
REVOKE SELECT ON *.*FROM myuser@%
收回myuser的所有權(quán)限:
REVOKE ALL PRIVILEGES,GRANT OPTION FROM myuser@%
4. 查看權(quán)限
SHOW GRANTS語句用于查看權(quán)限。同時mysql數(shù)據(jù)庫下的user表中存儲著用戶的基本權(quán)限。
SELECT * FROM mysql.user
SHOW GRANTS
更多精彩干貨分享
點(diǎn)擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129762.html
摘要:處在局域網(wǎng)之內(nèi)的,由于有局域網(wǎng)出入口的網(wǎng)絡(luò)設(shè)備的基本保護(hù),相對于暴露在廣域網(wǎng)中要安全不少,主要威脅對象基本控制在了可以接入局域網(wǎng)的內(nèi)部潛在威脅者,和極少數(shù)能夠突破最外圍防線局域網(wǎng)出入口的安全設(shè)備的入侵者。 前言 對于任何一個企業(yè)來說,其數(shù)據(jù)庫系統(tǒng)中所保存數(shù)據(jù)的安全性無疑是非常重要的,尤其是公司的有些商業(yè)數(shù)據(jù),可能數(shù)據(jù)就是公司的根本。 失去了數(shù)據(jù),可能就失去了一切 本章將針對mysql...
摘要:比如用戶表,第一行表示張三第二行表示李四,每一行都包含所有的列也就是字段。也是一種數(shù)據(jù)庫管理系統(tǒng)。但是,活躍的社區(qū)都給出了解決辦法,也在逐步成長。 本文主要介紹Mysql最基礎(chǔ)知識:Mysql基本概念。 1.1 數(shù)據(jù)庫基礎(chǔ) 1.1.1 簡介 數(shù)據(jù)庫,從字面意思來理解就是一個用來裝數(shù)據(jù)的容器。每天我們都在和數(shù)據(jù)庫打交道,比如你每天打開APP瀏覽新聞,瀏覽微博,這些都是間接的使用數(shù)據(jù)庫。 ...
摘要:二進(jìn)制日志是記錄對數(shù)據(jù)發(fā)生或潛在發(fā)生更改的語句,并以二進(jìn)制的形式保存。刪除配置文件刪除配置文件配置文件支持刪除操作。在配置文件列表頁選中需要刪除的配置文件,選中刪除即可完成刪除操作。UCloud MySQL云數(shù)據(jù)庫操作指南 基本操作 啟動MySQL實(shí)例 如果要啟動處于關(guān)閉狀態(tài)的MySQL實(shí)例,首先選擇需要啟動的MySQL實(shí)例,在列表右側(cè)點(diǎn)擊啟動按鈕,彈出的確認(rèn)對話框選擇確定...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2756·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20