MySQL服務(wù)的配置和使用
**修改MySQL管理員的口令:mysqladmin –u root password 密碼字符串 **
mysqldmin –u root password 111111
**連接MySQL服務(wù)器侮东,使用命令: mysql [-h 主機(jī)名或IP地址] [-u 用戶名] [-p] **
mysql –u root –p
如已有密碼需修改root密碼用命令: mysqladmin –u root –p password 新密碼字符串
mysqladmin –u root –p password 111111
數(shù)據(jù)庫的創(chuàng)建粥航、修改和刪除
創(chuàng)建數(shù)據(jù)庫格式為:CREATE DATABASE 數(shù)據(jù)庫名稱;
mysql>CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 默認(rèn)創(chuàng)建數(shù)據(jù)庫保存在/var/lib/mysql中
查看數(shù)據(jù)庫是
mysql>show abc;
選擇數(shù)據(jù)庫是 USE 數(shù)據(jù)庫名稱
mysql>use abc;
刪除數(shù)據(jù)庫是 DROP DATABASE 數(shù)據(jù)庫名稱
mysql>drop database abc;
查看數(shù)據(jù)庫中建表語句
show create table mysql.proxies_priv\G
創(chuàng)建表是 CREATE TABLE 表名稱(字段1,字段2搜吧,…[表級約束]) [TYPE=表類型]杨凑;
其中字段(1,2 )格式為:字段名 字段類型 [字段約束]
CREATE TABLE `ts_notify_node` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`node` varchar(50) NOT NULL COMMENT '節(jié)點(diǎn)名稱',
`nodeinfo` varchar(50) NOT NULL COMMENT '節(jié)點(diǎn)描述',
`appname` varchar(50) NOT NULL COMMENT '應(yīng)用名稱',
`title_key` varchar(50) NOT NULL COMMENT '標(biāo)題key',
`content_key` varchar(50) NOT NULL COMMENT '內(nèi)容key',
`node_content` varchar(100) NOT NULL DEFAULT '' COMMENT '內(nèi)容',
`send_push` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '是否發(fā)送手機(jī)推送通知',
`type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '信息類型:1 表示用戶發(fā)送的 2表示是系統(tǒng)發(fā)送的',
`action` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '跳轉(zhuǎn)類型撩满,跳轉(zhuǎn)類型,1:活動(dòng)詳情頁 2:資訊 3:熱門話題頁 4:故事詳情頁 5:H5鏈接 6:專題頁 7:訂單詳情頁 8:個(gè)人詳情頁 9:圖文詳情頁 10:評論詳情頁 11:直播頁',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8
可用describe命令查看表的結(jié)構(gòu)
默認(rèn)表的類型為MYISAM忌锯,并在/var/lib/mysql/abc 目錄下建立student.frm(表定義文件)领炫,student.MDY(數(shù)據(jù)文件)驹吮,stedent.MYI(索引文件)碟狞。
復(fù)制表 CREATE TABLE 新表名稱 LIKE 原表名稱婚陪;
mysql>create table xtable like student;
刪除表 DROP TABLE 表名稱1[表名稱2…];
mysql> drop table xtale;
修改表 ALTER TABLE 表名稱 更改動(dòng)作1[動(dòng)作2]
動(dòng)作有ADD(增加) DROP(刪除)CHANGE泌参、MODIFY(更改字段名和類型)RENAME
增加字段
mysql>alter table xm_jpush add msg_id varchar(100) NOT NULL DEFAULT 0 comment '信息ID' after id;
更改字段名和字段類型
mysql>alter table student change saddress sremark test;
即使不更改字段類型也要給出字段類型
mysql>alter table student change saddress sremark varchar (25);
更改字段類型
mysql> alter table xm_jpush modify msg_id varchar(100) NOT NULL DEFAULT 0;
刪除字段
mysql>alter table student drop sremark沽一;
更改表名稱
mysql>alter table student rename to xs铣缠;
表中數(shù)據(jù)的插入、刪除和修改
插入記錄: INSERT INTO 表名稱(字段名1,字段名2…)VALUES(字段1的值蝇庭,字段2的值)
如:mysql>insert into student (sno,sname,ssex,sbirthday,sdepa) values(‘0321001’,’Liu Tao’,dagault,19870201,’math’);
**查看表 **
mysql>select * from student;
插入與前面相同的記錄哮内,可用insert命令的縮寫格式北发,
如: mysql>insert into student values (‘0321001’, ‘Liu Tao’, default, 19870201, ‘mth’);
如果字段名列表中沒有給出表中的某些字段泰涂,那么這些字段設(shè)置為默認(rèn)值逼蒙,
如:mysql>insert into student (sno,sname,sbirthday) values(‘0321002’,’Wang Jun’,1870112);
一個(gè)單獨(dú)的insert語句中可使用多個(gè)valuse字句,插入多條記錄僵井,
如:mysql>insert into student values (‘0322001’, ‘Zhang Liaoyun’, ‘f’ 1971102,’computer’),(‘0322002’, ‘Li Ming’, ‘t’ 1971105,’computer’);
刪除記錄: DELETE FROM 表名稱 WHERE 條件表達(dá)式批什;
如:mysql>delete from student where sno=’0321002’;
刪除student表中sno字段值前4位為‘0322’的記錄
如:mysql>delete from student where left (sno,4)=’0322’;
刪除所以記錄驻债,可以不帶where字句
如:mysql>delete from student;
刪除不在某些ID的值,多個(gè)ID值
delete from sns_hits where id not in (1,2,3)
刪除所以記錄可以用命令truncate 刪除表暮的,然后重建表冻辩,所以比delete命令快
如:mysql>truncate table student;
修改記錄 UPDATE 表名稱 SET 字段名1=字段值1 WHERE 條件表達(dá)式
如: mysql>update student set sbirthday=1920113, sdepa=’math’ where sno=’0321002’;
查詢一表在另一表中不存在的數(shù)據(jù)
select * from goods g LEFT JOIN goods_common gc on g.goods_commonid=gc.goods_commonid where gc.goods_commonid is null;
索引的創(chuàng)建與刪除
在創(chuàng)建表的同時(shí)創(chuàng)建索引
創(chuàng)建表時(shí)恨闪,可用INDEX字句或UNIQUE(字段值必須惟一)字句創(chuàng)建索引
如:創(chuàng)建課程表course, 課程編號(hào)cno字段為主鍵,課程名稱cname字段創(chuàng)建一個(gè)名為can的索引
mysql>create table course(
cno varchar(5) not null,
cname varchar(30) not null,
teacher varchar(20),
primary key (cno),
index can (cname)
);
向已存在的表添加索引 CREATE [UNIQUE ] INDEX 索引名ON表名稱 (字段名1[(長度)])放坏;
mysql>create index sna on student (sname);
alter table 數(shù)據(jù)庫 add index 索引名稱(數(shù)據(jù)庫字段名稱)
** PRIMARY KEY(主鍵索引)**
ALTER TABLE
table_nameADD PRIMARY KEY (
column)
UNIQUE(唯一索引)
ALTER TABLE
table_nameADD UNIQUE (
column)
INDEX(普通索引)
mysql>ALTER TABLE
table_nameADD INDEX index_name (
column)
FULLTEXT(全文索引)
ALTER TABLE
table_nameADD FULLTEXT (
column)
對于類型為CHAR和VARCHAR的字段建立索引時(shí)還可指定長度值咙咽,類型為BLOB和TEXT的字段索引時(shí)必須指定長度值。
mysql>create index sna on student (sname(10));
刪除索引 DROP INDEX 索引 ON表名稱轻姿;
mysql>drop index sna on student;
Alter table tb drop primary key;//刪除主建
用戶的創(chuàng)建和刪除
初始化時(shí)有5個(gè)MySQL授權(quán)表犁珠,其中host、tables_priv和columnts_priv 是空的互亮,表user和db決定了MySQL默認(rèn)的訪問規(guī)則犁享。默認(rèn)有mysql和test兩個(gè)數(shù)據(jù)庫豹休。
授權(quán)表:
user 用戶從哪些主機(jī)可以連接到數(shù)據(jù)庫服務(wù)器炊昆,以及對所以數(shù)據(jù)庫的訪問權(quán)限(全局權(quán)限)
db 用戶可以使用哪些權(quán)限,以及對數(shù)據(jù)庫執(zhí)行哪些操作(數(shù)據(jù)庫級權(quán)限)
host 當(dāng)表db 中的host 字段值為空時(shí)威根,用戶從哪些主機(jī)可以連接到數(shù)據(jù)庫服務(wù)器凤巨。
tables_priv 連接的用戶可以訪問哪些表(表級權(quán)限)
columnts_priv 連接的用戶可以訪問哪些字段 (字段級權(quán)限)
創(chuàng)建新用戶
以MySQL管理員連接到數(shù)據(jù)庫服務(wù)器: #mysql –u root –p
創(chuàng)建新用戶guess并設(shè)置密碼,同時(shí)可以從任何主機(jī)連接數(shù)據(jù)庫服務(wù)器:
mysql>insert into mysql.user (host,user,password) values (‘%’,’gusee’,password(‘guest’));
使用password()函數(shù)洛搀,密碼是加密的
重載MySQL授權(quán)表
mysql>flush privileges;
遠(yuǎn)程客戶端連接數(shù)據(jù)庫服務(wù)器
mysql –h 192.168.0.50 –u guess –p 開放服務(wù)器的TCP斷口3306
查看當(dāng)前用戶可用數(shù)據(jù)庫
show database
刪除用戶
mysql>delete from mysql.user where user=’guest’;
mysql>flush privileges; 重載MySQL授權(quán)表
更改用戶密碼
更改guset密碼為123456
mysql>update mysql.user set password=password(‘123456’)where user =’guset’;
mysql>flush privileges;
或者是 mysql>set password for guset@’%’=password(‘123456’);
用戶權(quán)限的設(shè)置
指定數(shù)據(jù)庫權(quán)限給某個(gè)用戶
grant all on sck_blog.* to songchaoke@localhost identified by 'songchaokemysql';
在表user敢茁、db和host中,所有字段聲明為ENUM(‘N’,’Y’),默認(rèn)是‘N’;
在表tables_priv和columns_priv中留美,權(quán)限字段聲明為SET類型
修改授權(quán)表中的訪問權(quán)限有兩中方法彰檬,一是使用 INSERT伸刃、UPDATE和DELETE等DML語句,另一中是GRANT和GRVOKE語句
使用GRANT語句授權(quán)
格式如下:
GRANT 權(quán)限列表 [(字段列表)] on 數(shù)據(jù)庫名稱.表名稱
TO 用戶名@域名或IP地址
[INDETIFIED BY ‘密碼值’] [WITH CRANT OPTION];
授權(quán)哪個(gè)用戶能連接逢倍,從哪連接
如:授權(quán)用戶guest從任意主機(jī)連接數(shù)據(jù)庫服務(wù)器捧颅,并具有完全訪問數(shù)據(jù)庫abc的權(quán)限。
Mysql>grant all on abc.* to guset@’%’ identified by ‘guest’
注意幾點(diǎn):
如指定用戶不存在较雕,則創(chuàng)建該新用戶碉哑;
‘權(quán)限列表’處ALL表示授予全部權(quán)限,USAGE表不授予任何權(quán)限亮蒋。
‘?dāng)?shù)據(jù)庫名稱.表名稱’處可以使用通配符“”扣典。如“abc.”表數(shù)據(jù)庫abc中所有表
‘用戶名@域名或IP地址’設(shè)置誰能連,從哪連慎玖。用戶名 不能用通配符激捏,但可以用‘ ’空字符串,表任何用戶凄吏;域名或IP地址可以用通配符“%”,使用是用單引號(hào)括起來闰蛔。
授權(quán)用戶不同級別的訪問權(quán)限
如:新建用戶tom,能從子網(wǎng)192.168.16.0訪問數(shù)據(jù)庫服務(wù)器痕钢,可以讀取數(shù)據(jù)庫xsxk,并能修改表course 中字段teacher的值
mysql>grant select on xsxd.* to tom@’192.168.16.%’ identified by ‘123456’;
mysql>grant update(teacher) on xsxd.course to tom@’192.168.16.%’’
注意幾點(diǎn):
數(shù)據(jù)庫名稱.表名稱 用來設(shè)置權(quán)限運(yùn)用的級別,有全局的(.),指定數(shù)據(jù)庫的(xsxd.*)和指定表的(xsxd.student);
字段列表 設(shè)置權(quán)限運(yùn)用中指定的表中的哪些字段序六,如update(cname,teacher)
權(quán)限列表 指定的權(quán)限與權(quán)限運(yùn)行的級別有關(guān)任连,如有寫權(quán)限(FILE、PROCESS例诀、RELOAD随抠、SHUTDOWN)作為管理權(quán)限用于全局級別;對于字段級別只能指定SELECT繁涂、INSERT拱她、UPDATE、REFERENCES
授予用戶管理權(quán)限的權(quán)利
如:管理員授予擁護(hù)admin可以從本地連接數(shù)據(jù)庫服務(wù)器扔罪,對數(shù)據(jù)庫xsxk具有完全訪問權(quán)限秉沼,并可以將擁有的權(quán)限賦予其他用戶
mysql>grant all on xsxd.* to admin@localhost indentified by ‘123456’ with grant option;
其中with grant option 子句表示擁護(hù)擁有的權(quán)限可以賦予其他用戶。
mysql>qrant select on xsxd.student to bill@localhost; 授予bill用戶權(quán)限
mysql>show grants for admin@localhost; 查看用戶權(quán)限
使用REVOKE語句撤權(quán)
格式如下:
REVOKE 權(quán)限列表[(字段列表)] on數(shù)據(jù)庫名稱.表名稱
FROM用戶名@域名或IP地址
撤消用戶admin@localhost 對數(shù)據(jù)庫xsxd的創(chuàng)建矿酵、刪除數(shù)據(jù)庫及表的權(quán)限唬复,不撤消用戶賦予其它用戶的權(quán)限
mysql>revoke create,drop on xsxd.* from admin@localhost;
mysql>revoke grant option on xsxd.* from admin@localhost;
MySQL差異對比
mysqldiff --server1=root:DYqdEpZx7vF4UQey@localhost:3306 --server2=root:DYqdEpZx7vF4UQey@localhost:3306 sns_ceshi.ts_advertising:sns.ts_advertising