mysql用户与权限管理笔记
今天想使用一下李刚那本书上的hibernate的Demo,试出了点问题,过程中就发现mysql的用户管理和权限管理上也有点东西要注意,所以顺便就写一下mysql用户管理和权限管理的笔记。
先说一说mysql的安装:
我们在ubuntu下先安装mysql:
sudo apt-get install mysql-server
安装好了以后呢,我们先用root身份登录到数据库中,我记得安装过程的最后一步里面,如果你在可视化界面下用控制台的话,它好像是会要求你输入root的密码的。不过如果没有也没关系,那mysql就默认root是没有密码的了。
我们可以直接用root登录到数据库中:
$mysql -u root
如果你不使用-u root选项的话,mysql就会默认你是在当前用户的权限下登录的(这个真没啥好说的了)。
进去之后,修改权限和密码:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";
那个privileges写不写无所谓,新版本的mysql直接写all就行了,意思是全部操作的权限都给你指定的那个用户。
*.*是什么意思呢,它的原型是’db_name.table_name’,所以在此的意思是所有数据库的所有表。
root@localhost表示的就是本地登录的root账户,identified by后跟的就是你要设置的密码。
下次你再想用root身份登录mysql就应该在控制台输入:
$mysql -u root -p
然后控制台会弹出”Enter password:”叫你输入密码。
基本的root设置就是这样了。
如果你希望别人可以通过IP地址访问你的数据库,那么就改一下/etc/mysql/my.cnf中的配置即可:
$sudo gedit /etc/mysql/my.cnf
把bind-address=127.0.0.1中的地址改成你机子分配到的IP地址即可。
想知道自己的网卡信息,用ifconfig命令就可以了,不多说了。
一、用户的增删修改:
用户操作,一般都要以root身份登录到mysql中进行(不一定是root,但凡是具有CREATE USER相关权限和GRANT OPTION相关权限的账户均可)。
新建用户的语法如下:
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
最基本的,我想新建一个本地账户,名叫nero,密码是123456(先用root登录到mysql):
create user ‘nero’@‘localhost’ identified by ‘123456’
删除用户的语法则是:
DROP USER user [, user] ...
比如我要删除刚刚新建的用户:
drop user ‘nero’@‘localhost’
更改用户密码:
方法一:
mysqladmin -u 用户名 -p password 新密码
比如说前面新建的nero账户我想把它的密码改成123:
$ mysqladmin -u nero -p password ''
然后会通过’Enter password:’提示你输入旧密码以确认,确认以后则完成修改,下次你再用nero这个账户登录的时候,需要输入的密码就是123。
方法二:
当然你也可以通过SET PASSWORD语法来更改密码,当然,首先你当前登录的账户要有这个权限(比如root账户):
SET PASSWORD [FOR user] =
{
PASSWORD('some password')
| OLD_PASSWORD('some password')
| 'encrypted password'
}
比如说,更改nero这个本地账户的密码:
set password for ‘nero’@’localhost’ = password(‘123’)
二、用户权限:
其实创建用户就是为了管理权限,我们不想要每个人都能对这个数据库做改动,有些账户可能我只希望你能查看(select),但是没法修改(增删改等)。这个时候我们就可以创建一些权限比较少的用户。
分配权限我们可以用GRANT,而收回(取消)权限则可以用REVOKE。
Grant:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...] object_type:
TABLE
| FUNCTION
| PROCEDURE priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name ssl_option:
SSL
| X509
| CIPHER 'cipher'
| ISSUER 'issuer'
| SUBJECT 'subject' with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
比如说前面我创建的账户nero,我希望他获取所有的权限:
mysql>GRANT ALL ON *.* TO 'nero’ '@'localhost' identified by ‘123456’ ;
localhost表明nero这个账户从本地登录的时候可以获取全部操作权限。
一旦一个账户拥有所有权限,那么他对数据库就有完全的操作权,包括用户创建、权限修改等等,就不仅是简单的数据库、表操作了。
那如果我希望这个账户从任何一台机远程登录都能够有全部权限,则可以修改为:
mysql>GRANT ALL ON *.* TO nero@’%’ IDENTIFIED BY "123456";
单引号双引号都是没关系的。
如果我要对某一个特定的账户一些指定的权限,那么输入如下:
mysql>GRANT SELECT, INSERT ON db_name.table_name TO 'someuser'@'somehost';
甚至你也可以更详细地指定到列的权限,比如:
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';
Revoke:
Revoke语法规则如下:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
撤销所有权限则是:
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...
比如我要删除本地账户nero对任何数据库中的任何表的insert权限:
REVOKE INSERT ON *.* FROM ‘nero’@'localhost';
其他的都大同小异,不作赘述,具体可以翻阅帮助文档。
题外话:
前阵子朋友看我记笔记,说写网络笔记不用写得太详细吧,记个大概即可,自己能看懂就行。
其实对这样的说法很有感触。像我们初学一门知识的时候,没人指导,没人告诉我们那些看似显而易见但是却晦涩难懂的东西,比如数学证明的一些“我们不妨做如下猜测”、“明显地”之类的话,可能老师自己也不知道为什么,毕竟做老师也只是一份职业,谋一口饭吃,不能奢求太多。但是初学者却确实要因此而绕很多弯路,并且起步很慢,很多实用性强,以后工作里可能经常需要用到的专业知识,老师也不会特地点出来告诉你。
每次想起这些都觉得很痛心。其实我们每次网上搜索一些关键词,哪次不是希望搜到的结果里面,就有一种切实可行的解决方案,很多时候搜索这些词汇的人是非常迫切地希望问题得到解决的(当然也不乏一些投机行为)。而这些人群中,很大一部分就是初学者。
英语不是我们的母语,学习外文知识总是更慢更没效率的,为什么国外的小屁孩八九岁就能做应用,因为英语就是他们的母语,他们看得懂帮助文档,比看市面上的那些“21天精通XXX”的书好上千百倍(这些书就别出版来误人子弟了)。当我们认真去看那些市面上写得比较优秀的书,比如说李刚写的J2EE相关的书,哪些不是从帮助文档里直接拿来然后改改做例子的?但是他能梳理,他有这能力,所以这钱就应该他赚。
综上,我只想说:第一,好好学英语;第二,对新手好点,宽容点。
最后给出常用权限列表:
Privilege |
Meaning |
ALL [PRIVILEGES] |
Grant all privileges at specified access level except GRANT OPTION |
Enable use of ALTER TABLE |
|
Enable stored routines to be altered or dropped |
|
Enable database and table creation |
|
Enable stored routine creation |
|
Enable tablespaces and log file groups to be created, altered, or dropped |
|
Enable use of CREATE TEMPORARY TABLE |
|
Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES |
|
Enable views to be created or altered |
|
Enable use of DELETE |
|
Enable databases, tables, and views to be dropped |
|
Enable use of events for the Event Scheduler |
|
Enable the user to execute stored routines |
|
Enable the user to cause the server to read or write files |
|
Enable privileges to be granted to or removed from other accounts |
|
Enable indexes to be created or dropped |
|
Enable use of INSERT |
|
Enable use of LOCK TABLES on tables for which you have the SELECT privilege |
|
Enable the user to see all processes with SHOW PROCESSLIST |
|
Not implemented |
|
Enable use of FLUSH operations |
|
Enable the user to ask where master or slave servers are |
|
Enable replication slaves to read binary log events from the master |
|
Enable use of SELECT |
|
Enable SHOW DATABASES to show all databases |
|
Enable use of SHOW CREATE VIEW |
|
Enable use of mysqladmin shutdown |
|
Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL,PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command |
|
Enable triggers to be created or dropped |
|
Enable use of UPDATE |
|
Synonym for “no privileges” |
mysql用户与权限管理笔记的更多相关文章
- Mysql 用户,权限管理的几点理解。
前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...
- mysql 用户及权限管理 小结
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...
- MySQL Study之--MySQL用户及权限管理
MySQL Study之--MySQL用户及权限管理 MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...
- MySQL用户与权限管理
执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...
- mysql用户和权限管理
用户和权限管理 Information about account privileges is stored in the user, db, host, tables_priv, columns_p ...
- Mysql 用户和权限管理
用户和权限管理: 语法 grant 权限 on 数据库.数据表 to '用户' @ '主机名'; 例:给 xiaogang 分配所有的权限 grant all on *.* to 'xiaogang' ...
- MariaDB/MySQL用户和权限管理
本文目录: 1.权限验证 1.1 权限表 1.2 图解认证和权限分配的两个阶段 1.3 权限生效时机 2.用户管理 2.1 创建用户 2.2 create user和alter user 2.3 记录 ...
- (九)MySQL用户和权限管理
(1)用户管理 1)登录和退出mysql 例: mysql -h192.168.111.150 -P3306 -uroot -predhat mysql -e 'select user,host,au ...
- MySQL 用户与权限管理
MySQL权限系统的主要功能是证实连接到一台给定主机的用户,而且赋予该用户在数据库上的相关DML,DQL权限.MySQL存取控制包括2个阶段,一是server检查是否同意你连接:二是假定你能连接,se ...
随机推荐
- asp.net页面触发事件panel滚动条高度不变的实现方法
asp.net页面按钮点击触发事件后panel滚动条非自动回到顶端,每次都要往下拉一下,关于这个问题的解决方法如下 此文是为解决asp.net页面按钮点击触发事件后panel滚动条非自动回到顶端的解决 ...
- 在ChemDraw中一键隐藏所有氢原子的方法
在常见的化学结构中氢原子是非常常见的一种原子,而且在很多的结构中氢原子的数量是非常的多的.因此我们在使用ChemDraw化学绘图软件绘制化学结构的过程中,发现有的时候氢原子数量过多会影响到整体结构的美 ...
- java项目学习
GitHub地址:https://github.com/zhanglei-workspace/shopping-management-system
- Ad Hoc Distributed Queries组件
http://www.cnblogs.com/870060760JR/p/6016080.html SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的 STA ...
- django用户认证系统——登录4
用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...
- 56、LeakCanary——直白的展现Android中的内存泄露
转载:http://blog.csdn.net/watermusicyes/article/details/46333925 DEMO下载地址:https://github.com/SOFTPOWER ...
- asp.net 上传XML,txt 直接读取文件内容
if (GetUploadFileContent.PostedFile.InputStream.Length < 1) { Msg.Text = "请选择文件"; retur ...
- git base 简单命令行
记录几个简单的命令 1:克隆-把线上的文件复制到本地 git clone 线上地址 2:检查状态 git status 3:放入待仓储 git add.文件名 git add * (全部文件,简单粗暴 ...
- Win10-64位 免安装版Mysql8下载安装运行
今天忙活了很久去下载安装Mysql,感觉网上的那些教程怎么都对不上呢,很奇怪,不过我乱点一通至少能用了,先凑和着用吧... 记录一下, 要是不对的,以后再修改...windows10系统 2018-5 ...
- Oracle存储——逻辑结构
Oracle 数存储——物理结构 Oracle存储结构:物理结构+逻辑结构 Oracle 数据库存储逻辑结构 Oracle Schema Objects(Schema Object Storage A ...