一般在為MySql創(chuàng)建用戶時建議使用GRANT前臺命令,當然如果對我們開發(fā)者而言,方法還有很多種,比如使用INSERT命令,甚至是直接修改mysql user數(shù)據(jù)表,但仍然建議按照MySQL規(guī)范去授權(quán)賬戶。因為它太容易忘記,特別整理方便參考。
成都創(chuàng)新互聯(lián)專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,中國電信成都樞紐中心服務(wù)有保障!
1、登錄MySQL
輸入mysql -u root和密碼即可登錄到Mysql。
2、選擇數(shù)據(jù)庫
語句如下:use mysql;
3、在mysql的user表中增加連接用戶
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
其中:
“username”替換為將要授權(quán)的用戶名,比如clientusr;
“password”替換為clientusr設(shè)置的密碼;
4、可訪問數(shù)據(jù)表授權(quán)
創(chuàng)建好帳戶之后,就開始給上面的common user進行數(shù)據(jù)表授權(quán),步驟3中增加的連接用戶默認權(quán)限都是“N”的,必須在db表中為該帳戶授權(quán),允許其訪問專用數(shù)據(jù)庫,當然超級用戶就不說了。
使用下面語句:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbx.* TO 'username'@'localhost' IDENTIFIED BY 'password';
本語句中的權(quán)限根據(jù)實際需要確定:
"dbx"替換為授權(quán)訪問的數(shù)據(jù)庫名,如果只給某張表授權(quán):dbx.tablename
"username"是步驟2授權(quán)用戶名
"password"是步驟2授權(quán)用戶的設(shè)置密碼
這樣就為該用戶授予了對某數(shù)據(jù)表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP權(quán)限。
5、生效授權(quán),創(chuàng)建完畢
FLUSH PRIVILEGES;
備注:
1、不要直接使用INSERT語句添加user記錄,使用INSERT可能出現(xiàn):ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value錯誤。不過早期的MYSQL版本筆者倒沒出現(xiàn)這個錯誤,因為天緣一直都是直接修改user表或直接使用INSERT語句完成,后來升級MYSQL到5.1的時候,發(fā)現(xiàn)可能會出現(xiàn)這個錯誤。
2、上文3和4,也可使用一句話GRANT ALL ON tbx.* TO 'username' IDENTIFIED BY 'password',這句話會自動創(chuàng)建username并為之授權(quán)。更多授權(quán)權(quán)限可參考MYSQL官方網(wǎng)站。
MySQL命令行能否實現(xiàn)新建用戶呢?答案無疑是肯定的。而且在使用使用MySQL命令行新建用戶后,還可以為用戶授予權(quán)限。
首先要聲明一下:一般情況下,修改MySQL密碼,授權(quán),是需要有mysql里的root權(quán)限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同樣適用。
用戶:phplamp
用戶數(shù)據(jù)庫:phplampDB
1.MySQL命令行新建用戶
//登錄MYSQL
@mysql -u root -p
@密碼
//創(chuàng)建用戶
mysql insert into mysql.user(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系統(tǒng)權(quán)限表
mysqlflush privileges;
這樣就創(chuàng)建了一個名為:phplamp 密碼為:1234 的用戶。
//退出后登錄一下
mysqlexit;
@mysql -u phplamp -p
@輸入密碼
mysql登錄成功
2.MySQL命令行為用戶授權(quán)
//登錄MYSQL(有ROOT權(quán)限)。我里我以ROOT身份登錄.
@mysql -u root -p
@密碼
//首先為用戶創(chuàng)建一個數(shù)據(jù)庫(phplampDB)
mysqlcreate database phplampDB;
//授權(quán)phplamp用戶擁有phplamp數(shù)據(jù)庫的所有權(quán)限
@grant all privileges on phplampDB.* to phplamp@localhost identified by '1234'; //這里需要注意,如果發(fā)現(xiàn)找不到用戶,需要執(zhí)行命令 flush privilieges;
//刷新系統(tǒng)權(quán)限表
mysqlflush privileges;
mysql其它操作
//如果想指定部分權(quán)限給一用戶,可以這樣來寫:
mysqlgrant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系統(tǒng)權(quán)限表。
mysqlflush privileges;
mysql grant 權(quán)限1,權(quán)限2,…權(quán)限n on 數(shù)據(jù)庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
權(quán)限1,權(quán)限2,…權(quán)限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權(quán)限。
當權(quán)限1,權(quán)限2,…權(quán)限n被all privileges或者all代替,表示賦予用戶全部權(quán)限。
當數(shù)據(jù)庫名稱.表名稱被*.*代替,表示賦予用戶操作服務(wù)器上所有數(shù)據(jù)庫所有表的權(quán)限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能為空,否則創(chuàng)建失敗。
例如:
mysqlgrant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對數(shù)據(jù)庫vtdc的employee表進行select,insert,update,delete,create,drop等操作的權(quán)限,并設(shè)定口令為123。
mysqlgrant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對數(shù)據(jù)庫vtdc所有表進行所有操作的權(quán)限,并設(shè)定口令為123。
mysqlgrant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對所有數(shù)據(jù)庫的所有表進行所有操作的權(quán)限,并設(shè)定口令為123。
mysqlgrant all privileges on *.* to joe@localhost identified by ‘123′;
給本機用戶joe分配可對所有數(shù)據(jù)庫的所有表進行所有操作的權(quán)限,并設(shè)定口令為123。
角色一個表,用戶一個表,在建一個表3個字段id,角色表id,用戶表id,
用戶去選擇什么樣的角色,,后臺做一個創(chuàng)建角色的功能,更用戶來匹配
一、連接MySQL
格式: mysql -h主機地址 -u用戶名 -p用戶密碼
1、 連接到本機上的MYSQL。
首先打開DOS窗口,然后進入目錄mysql\bin,再鍵入命令mysql -u root -p,回車后提示你輸密碼.注意用戶名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.
如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql
2、連接到遠程主機上的MYSQL。假設(shè)遠程主機的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命 令:
mysql -h110.110.110.110 -u root -p 123;(注:u與root之間可以不用加空格,其它也一樣)
3、 退出MYSQL命令: exit (回車)
二、修改密碼
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼。 例如
1、 給root加個密碼ab12。首先在DOS下進入目錄mysql\bin,然后鍵入以下命令
mysqladmin -u root -password ab12
2、 再將root的密碼改為djg345。
mysqladmin -u root -p ab12 password ******
三、創(chuàng)建數(shù)據(jù)庫
1、 CREATE DATABASE 數(shù)據(jù)庫名;
2、 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 數(shù)據(jù)庫名.* TO 數(shù)據(jù)庫名@localhost IDENTIFIED BY '密碼';
3、 SET PASSWORD FOR
'數(shù)據(jù)庫名'@'localhost' = OLD_PASSWORD('密碼');
依次執(zhí)行3個命令完成數(shù)據(jù)庫創(chuàng)建。注意:中文 “密碼”和“數(shù)據(jù)庫”是戶自己需要設(shè)置的。
—————————————————————————————————————————————
現(xiàn)在介紹一些常用的MYSQL命令
注意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進行的,而且每個命令以分號結(jié)束。
一、操作技巧
1、如果你打命令時,回車后發(fā)現(xiàn)忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了。
也就是說你可以把一個完整的命令分成幾行來打,完后用分號作結(jié)束標志就OK。
2、你可以使用光標上下鍵調(diào)出以前的命令。
二、常用命令
1、顯示當前數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫列表:
mysql SHOW DATABASES;
2、建立數(shù)據(jù)庫:
mysql CREATE DATABASE 庫名;
3、建立數(shù)據(jù)表:
mysql USE 庫名;
mysql CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
4、刪除數(shù)據(jù)庫:
mysql DROP DATABASE 庫名;
5、刪除數(shù)據(jù)表:
mysql DROP TABLE 表名;
6、將表中記錄清空:
mysql DELETE FROM 表名;
7、往表中插入記錄:
mysql INSERT INTO 表名 VALUES ("hyq","M");
8、更新表中數(shù)據(jù):
mysql- UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';
9、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)表中:
mysql LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE 表名;
10、導(dǎo)入.sql文件命令:
mysql USE 數(shù)據(jù)庫名;
mysql SOURCE d:/mysql.sql;
11、命令行修改root密碼:
mysql UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root';
mysql FLUSH PRIVILEGES;
三、一個建庫和建表以及插入數(shù)據(jù)的實例
drop database if exists school; //如果存在sudu則刪除
create database sudu; //建立庫sudu
use school; //打開庫sudu
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表結(jié)束
//以下為插入字段
insert into teacher values('','allen','飛數(shù)科技1','2005-10-10');
insert into teacher values('','jack','飛數(shù)科技2','2005-12-23');如果你在mysql提示符鍵入上面的命令也可以,但不方便調(diào)試。
(1)你可以將以上命令原樣寫入一個文本文件中,假設(shè)為sudu.sql,然后復(fù)制到c:\\下,并在DOS狀態(tài)進入目錄\mysql\bin,然后鍵入以下命令:
mysql -uroot -p密碼 c:\sudu.sql
如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經(jīng)調(diào)試,你只要將//的注釋去掉即可使用)。
(2)或者進入命令行后使用 mysql source c:\sudu.sql; 也可以將sudu.sql文件導(dǎo)入數(shù)據(jù)庫中。
四、將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫中
1、文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開,null值用\n來代替.例:
3 rose 飛數(shù)科技1 1976-10-10
4 mike 飛數(shù)科技2 1975-12-23
假設(shè)你把這兩組數(shù)據(jù)存為速度sudu.txt文件,放在c盤根目錄下。
2、數(shù)據(jù)傳入命令 load data local infile "c:\sudu.txt" into table 表名;
注意:你最好將文件復(fù)制到\mysql\bin目錄下,并且要先用use命令打表所在的庫。
五、備份數(shù)據(jù)庫:(命令在DOS的\mysql\bin目錄下執(zhí)行)
1.導(dǎo)出整個數(shù)據(jù)庫
導(dǎo)出文件默認是存在mysql\bin目錄下
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 導(dǎo)出的文件名
mysqldump -u user_name -p123456 database_name outfile_name.sql
2.導(dǎo)出一個表
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名 導(dǎo)出的文件名
mysqldump -u user_name -p database_name table_name outfile_name.sql
3.導(dǎo)出一個數(shù)據(jù)庫結(jié)構(gòu)
mysqldump -u user_name -p -d --add-drop-table database_name outfile_name.sql
-d 沒有數(shù)據(jù) --add-drop-table 在每個create語句之前增加一個drop table
4.帶語言參數(shù)導(dǎo)出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt database_name outfile_name.sql