一、表結(jié)構(gòu)管理
1. 修改表名
ALTER TABLE 舊表名 RENAME 新表名
?2.擴(kuò)展表結(jié)構(gòu)(增加字段)
ALTER TABLE 表名 ADD 字段名 數(shù)據(jù)類型;
?3.修改字段名,添加唯一健 change
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 [數(shù)據(jù)類型] [約束];
4.刪除字段drop
ALTER TABLE 表名 DROP 字段名;
?5.復(fù)制表結(jié)構(gòu)
1)方式一:創(chuàng)建新表,導(dǎo)入數(shù)據(jù)
create table 新表名 like 舊表名; #通過LIKE方法,復(fù)制舊表的結(jié)構(gòu)生成新表
insert into 新表名 select * from 舊表名; #再將舊表數(shù)據(jù)導(dǎo)入新表
?2)復(fù)制表(直接復(fù)制表不能保證原有的表結(jié)構(gòu))
create table 新表名 (select * from 舊表名);
?6.臨時(shí)表創(chuàng)建
CREATE TEMPORARY TABLE 表名(字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[, ...] [, PRIMARY KEY (主鍵名)]);
?創(chuàng)建方式與創(chuàng)建表完全一致,最大的區(qū)別是,臨時(shí)表只在當(dāng)前的數(shù)據(jù)庫連接生效,當(dāng)數(shù)據(jù)庫連接斷開或重新連接終端時(shí),該臨時(shí)表均失效,無法查看。
7.清除表的兩種方式比較
方式一:delete清空??
delete from 表名;
方式二:truncate清空
truncate table 表名;
兩者區(qū)別:(1)delete清空屬于按照行清空,一行一行進(jìn)行,效率低,速度慢(對于表數(shù)據(jù)較多的情況) truncate相當(dāng)于刪除表數(shù)據(jù),保留表結(jié)構(gòu),重新創(chuàng)建一個(gè)與原表結(jié)構(gòu)相同的表?
(2)當(dāng)數(shù)據(jù)表中有自增型約束字段時(shí),delete清除表數(shù)據(jù)后,在插入數(shù)據(jù)時(shí),自增字段的數(shù)值會(huì)接著被刪除表數(shù)據(jù)的最后一個(gè)自增數(shù),計(jì)數(shù)。(eg:被刪除表數(shù)據(jù)最后一行id(自增),為10,再創(chuàng)建時(shí),該id從11開始)。truncate清空后,自增型字段會(huì)從1開始計(jì)數(shù)
?
二、登錄用戶管理
1.查看用戶密碼信息
用戶信息存放在?mysql
?數(shù)據(jù)庫下的?user
?表(MySQL 服務(wù)下存在一個(gè)系統(tǒng)自帶的 mysql 數(shù)據(jù)庫)。
use mysql ;
show tables;
?經(jīng)常使用的查看密碼信息的命令:
能看到密碼信息:是經(jīng)過加密后的密碼信息
select user,host,authentication_string from user;
?2.登錄用戶增加
明文密碼創(chuàng)建用戶格式:
create user '用戶名'@'主機(jī)' identified by '密碼'
加密密碼創(chuàng)建用戶 :
SELECT PASSWORD('密碼'); #先獲取加密的密碼
?
CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '加密的密碼';
?3.登錄用戶用戶名更改
RENAME USER '舊的用戶名'@'舊的主機(jī)地址' TO '新的用戶名'@'新的主機(jī)地址';
4.刪除登錄用戶
drop user '用戶名'@'登錄地址';
?5.查看當(dāng)前登錄用戶
select user();
6.修改用戶密碼
普通用戶只有修改自身密碼的權(quán)限
明文密碼修改:
set password = password ('新密碼');
root用戶是超級管理員,它不僅可以修改自身密碼,還能修改其他用戶的密碼。
set password for '用戶'@'登錄地址' =password ('密碼');
?7.root密碼的忘記后的修改找回方法
?該操作必須是在數(shù)據(jù)庫本機(jī)且為root用戶,才可進(jìn)行
1)第一步:添加跳過的初始配置
vim /etc/my.cnf
skip-grant-tables
2)?第二步:重啟數(shù)據(jù)庫服務(wù) ,修改數(shù)據(jù)庫用戶表中root密碼
systemctl restart mysql.service
mysql
mysql> UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123123') where user='root';
mysql> flush privileges; #刷新數(shù)據(jù)庫
?
mysql> quit #退出
?3)第三步:登錄測試新密碼?
mysql -u root -p123123
4)第四步:撤銷添加的免密碼認(rèn)證設(shè)置,重啟數(shù)據(jù)庫服務(wù)?
#刪除配置文件中的配置,之后重啟服務(wù)。
注意:最后再把/etc/my.conf 配置文件里的skip-grant-tables 刪除,并重啟mysql服務(wù)。
vim /etc/my.cnf
systemctl restart mysqld.service
?三、管理用戶登錄權(quán)限
常見的用戶權(quán)限
權(quán)限?? | ?權(quán)限說明?? | ?權(quán)限級別 |
CREATE?? ? | 創(chuàng)建數(shù)據(jù)庫、表或索引的權(quán)限?? ? | 數(shù)據(jù)庫、表或索引 |
DROP? | ? 刪除數(shù)據(jù)庫或表的權(quán)限?? ? | 數(shù)據(jù)庫或表 |
GRANT OPTION?? ??? | 賦予權(quán)限選項(xiàng) | ?數(shù)據(jù)庫或表 |
REFERENCES?? | ?引用權(quán)限?? ? | 數(shù)據(jù)庫或表 |
ALTER??? | ?更改表的權(quán)限 | ? ?數(shù)據(jù)表 |
DELETE?? ? | ?刪除表數(shù)據(jù)的權(quán)限?? | 數(shù)據(jù)表 |
INDEX?? ?? | 操作索引的權(quán)限 | ? ?數(shù)據(jù)表 |
INSERT?? ? | 添加表數(shù)據(jù)的權(quán)限?? | ?數(shù)據(jù)表 |
SELECT?? | ?查詢表數(shù)據(jù)的權(quán)限?? | ?數(shù)據(jù)表 |
UPDATE?? | ?更新表數(shù)據(jù)的權(quán)限?? | ?數(shù)據(jù)表 |
CREATE VIEW?? ??? | 創(chuàng)建視圖的權(quán)限 | ?視圖 |
SHOW VIEW?? ??? | 查看視圖的權(quán)限 | ?視圖 |
ALTER ROUTINE?? ? | 更改存儲過程的權(quán)限?? | ?存儲過程 |
CREATE ROUTINE?? | ?創(chuàng)建存儲過程的權(quán)限?? ? | 存儲過程 |
EXECUTE?? ? | 執(zhí)行存儲過程權(quán)限?? | ?存儲過程 |
FILE?? ? | ?服務(wù)器主機(jī)文件的訪問權(quán)限?? | 文件管理 |
CREATE TEMPORARY TABLES?? ?? | ?創(chuàng)建臨時(shí)表的權(quán)限 | ?服務(wù)器管理 |
LOCK TABLES?? | ?鎖表的權(quán)限?? | ?服務(wù)器管理 |
CREATE USER???? | ?創(chuàng)建用戶的權(quán)限 | ?服務(wù)器管理 |
RELOAD???? ? | ?執(zhí)行 flush privileges, refresh, reload 等刷新命令的權(quán)限 | 服務(wù)器管理 |
PROCESS?? ?? ? | 查看進(jìn)程的權(quán)限? | 服務(wù)器管理 |
REPLICATION CLIENT?? ? ? | 查看主從服務(wù)器狀態(tài)的權(quán)限?? | 服務(wù)器管理 |
REPLICATION SLAVE?? ?? | ?主從復(fù)制的權(quán)限 | ?服務(wù)器管理 |
SHOW DATABASES??? | ?查看數(shù)據(jù)庫的權(quán)限 | ? ?服務(wù)器管理 |
SHOW DATABASES??? | ?查看數(shù)據(jù)庫的權(quán)限 | ? ?服務(wù)器管理 |
SUPER?? ? | 超級權(quán)限? | ? ?服務(wù)器管理 |
ALL [PRIVILEGES]?? ? | 所有權(quán)限 | |
USAGE? ?? | ? ?沒有任何權(quán)限??? |
1.查看用戶已有的權(quán)限
SHOW GRANTS; #查看當(dāng)前用戶(自己)的權(quán)限
?
SHOW GRANTS FOR 用戶名@來源地址; #查看其他用戶的權(quán)限
?2.授權(quán)操作
1) 對存在用戶進(jìn)行授權(quán)
GRANT 權(quán)限列表 ON 數(shù)據(jù)庫名.表名 TO '用戶名'@'來源地址' [IDENTIFIED BY '密碼'];
權(quán)限列表: ?用于列出授權(quán)使用的各種數(shù)據(jù)庫操作,以逗號進(jìn)行分隔如"select, insert,update"。 使用"all"表示所有權(quán)限(實(shí)際上部分權(quán)限仍無法使用,只包括大部分權(quán)限),可授權(quán)執(zhí)行任何操作。
?? ?數(shù)據(jù)庫名.表名: ?用于指定授權(quán)操作的數(shù)據(jù)庫和表的名稱,其中可以使用通配符*。 例如,使用"mysql.*" 表示授權(quán)操作的對象為mysql數(shù)據(jù)庫中的所有表。 ?? ?'用戶名'@'來源地址': ?用于指定用戶名稱和允許訪問的客戶機(jī)地址,即誰能連接、能從哪里連接。 來源地址可以是域名、IP地址,還可以使用“%”通配符,表示某個(gè)區(qū)域或網(wǎng)段內(nèi)的所有地址。
?IDENTIFIED BY: ?用于設(shè)置用戶連接數(shù)據(jù)庫時(shí)所使用的密碼字符串。在新建用戶時(shí),若省略"IDENTIFIED BY"部分,則用戶的密碼將為空。
?2)對不存在的用戶進(jìn)行創(chuàng)建并授權(quán)?
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'來源地址' IDENTIFIED BY '密碼';
?3.撤銷用戶權(quán)限
revoke 權(quán)限列表/ALL on 庫名.表名 from '用戶名'@'來源地址';
四、總結(jié)
1.用戶管理操作
?create user 'username'@'address' identified by 'password'; ? #創(chuàng)建用戶 ??
?select user,host,authentication_string from mysql.user; ? #查看用戶信息 ??
?rename user old_user to new_user; ? ? ? ?#修改用戶名 ??
?drop user '用戶名'@'來源地址'; ? ? ? ? ? ?#刪除用戶 ?? ?
set password = password('XXXX'); ? ? ? ? #修改當(dāng)前登錄用戶的密碼 ??
?set password for '用戶名'@'來源地址' = password('XXXX'); ? ? #修改其他用戶的密碼 ??
?select user (); ? ? ?#查看當(dāng)前登錄用戶和來源地址 ??
?###忘記root用戶密碼的解決方法: ?
修改mysql配置文件/etc/my.cnf,在 [mysqld] 配置項(xiàng)下加入 skip-grant-tables
service mysqld restart ? #重啟服務(wù)
?mysql ? #免密登陸 ?
?update mysql.user set authentication_string=password('新密碼') where user='root'; ?
#修改密碼 flush privileges; #刷新數(shù)據(jù)庫
2.用戶授權(quán)操作?
grant 權(quán)限列表/ALL ON 庫名.表名 to 'username'@'address' identified by '密碼'; ?? ? #授予用戶權(quán)限 ?
show grants; ? ? #查看當(dāng)前用戶(自己)的權(quán)限 ? ? ? ? ? ? ? ?
show grants for 'username'@'address'; ? ? ?#查看其他用戶的權(quán)限 ??
?revoke 權(quán)限列表/ALL on 庫名.表名 from 'username'@'address'; ? #撤銷用戶的權(quán)限 ?? ?文章來源:http://www.zghlxwxcb.cn/news/detail-488266.html
mysql -u 用戶名 -p[密碼] -h 目標(biāo)IP/主機(jī)名 -P 端口號 ? ? ? ? ? ? #遠(yuǎn)程連接mysql
?文章來源地址http://www.zghlxwxcb.cn/news/detail-488266.html
到了這里,關(guān)于Mysql數(shù)據(jù)庫表管理和用戶管理與授權(quán)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!