Mysql中新建用戶,設置密碼
新建用戶
step 1.建立用戶:
CREATE USER 'aaa'@'%' IDENTIFIED BY '123456';
表示建立新的用戶,名爲aaa,新用戶密碼爲123456,'%'
表示容許遠程登錄可是不容許本機登陸
CREATE USER 'bbb'@'%' IDENTIFED BY '123456';
//表示新建立的用戶,名爲bbb,這個用戶密碼爲123456,能夠從其餘電腦遠程登錄mysql所在服務器
CREATE USER 'ccc'@'%'
;//表示新建立的用戶ccc,沒有密碼,能夠從其餘電腦遠程登錄mysql服務器mysqlstep 2.受權用戶:
GRANT ALL PRIVILEGES ON appmetadataDB.* TO 'aaa'@'%';
表示將數據庫appmetadatadb
下的全部表受權給用戶aaa
。這樣用戶名aaa
就能遠程訪問到這個數據庫(appmetadatadb
)下的全部表。寫入user表,可是並無及時寫入權限表(grant table)。sql- step 3.刷新權限表:
flush privileges
執行這個命令的緣由是,須要將新加入的用戶寫入到權限表中,即更新grant table
- step 4.查看以下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
這裏的mysql.user
是一個系統表,任何mysql數據庫系統都會存在。
- 檢測以下
若是在appmetadatadb
數據庫所在的系統上登陸用戶aaa
會報錯。錯誤如右:ERROR 1045 (28000): Access denied for user 'aaa'@'localhost' (using password: YES)
。可是將相同的代碼放到另外一臺主機上登陸,卻能夠實現登陸。
這個教訓必定要記住:就是建立用戶時,指定的%
是指除了數據庫所在主機外的全部主機均可以登陸。好比說,下面這個是用bbb
這個用戶,在虛擬機上遠程訪問物理機上的數據庫,可是在訪問的時候,須要在添加-h [數據庫所在主機的IP]
字段。數據庫
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
2.修改密碼
修改用戶密碼,方法有不少,這裏提供其中的兩種:
- set password for [userName]@localhost = password('[NewPassword]')
,其中[]
中的內容是可變字段。
- update mysql.user set password=password('123') where User="littlelawson" and Host="%";
服務器
3.刪除用戶
- 命令:
drop user [userName]
4.收回權限
5.其它
- 使用mysql的時候無論輸入什麼帳戶,均可以登陸,可是沒法查看其它用戶的表【由於沒有權限】。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
mysql -u root -p
命令的意思是:使用帳戶root登陸,登陸密碼在後面輸入。- mysql普通用戶沒法直接經過create database [Database Name]建立數據庫,會報錯(
Access denied for user 'littlelawson'@'localhost' to database 'testfd'
)。必須在root用戶下先建立個數據庫再經過受權語句把該database的權限給普通用戶。受權語句爲:grant all on user.* to user@host identified by password
。