您的位置:首页 > 运维架构 > Linux

我的Linux生涯之Mysql:Day04[Mysql之权限管理]

2014-01-03 20:59 302 查看
数据库管理员密码设置
mysqladmin

[root@localhost ~]# rpm -qf /usr/bin/mysqladmin
mysql-5.0.95-3.el5
设置密码之后会放在mysql库的user表里。
//初始化mysql : rm -rf /var/lib/mysql/mysql
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
//登陆的主机
| User | char(16) | NO | PRI | | | .
//用户
| Password | char(41) | NO | | | |
//密码
设置数据库管理员初始化密码:

shell> mysqladmin -u root -h localhost password "123456"
//password是一个函数,将密码通过加密存放在mysql.password内,字段类型为varchar,则须要使用""
mysql> select user,host,password from mysql.user;
+------+-----------------------+------------------+
| user | host | password |
+------+-----------------------+------------------+
| root | localhost | 565491d704013245 |
.......
修改数据库管理员密码:
shell> mysqladmin -h SERVERIP/HOSTNAME -u ADMINUSER -p password "密码"
Enter password:
//输入旧的管理员密码
恢复数据管理员密码:

//如果初始化,那么之前所设置的授权就没了。
//可以不让Mysql对密码进行授权库的验证
shell> vim /etc/my.conf
[mysqld]
....
skip-grant-table
//跳过授权表。
....
shell> service mysqld restart
//然后更新授权库的密码
mysql> update mysql.user set password=password("321") where user="root" and host="localhost";
//调用password这个函数对"321"进行加密。
mysql> flush privileges;
//只要对mysql库下的授权操作时,就一定要刷新
退出mysql,把my.conf文件中的"skip-grant-table"注释掉。
使用新密码登录mysql。
管理员重置授权用户密码

Mysql>set password for USERNAME@"CLIENT ADDR" =password("NEWPASSWORD")
//Mysql>set password for userweb@"192.168.10.10" =password("123QWE")
授权用户登录后修改自己的密码
Mysql> set password=password("NEWPASSWORD")
用户授权 权限撤销

用户授权
(默认情况下,只有数据库管理从服务器本登陆才有用户授权权限)

mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
查看当前登陆账户查看自己的权限
mysql> show grants;
+---------------------------------------------------------------------------------------------------------------+
| Grants for
root@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '7540a8d5245cc2d0' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
GRANT ALL PRIVILEGES *.*
//所有库.表拥有完全权限
'root'@'localhost'
//连接地址
WITH GRANT OPTION
//拥有授权权限
授权命令格式:

mysql> grant 权限列表 on DATANAME to USER@“LOCALHOST” identified by “PASSWORD” with grant option;
权限列表表示:
all 所有权限
select,delete,update 指定有某种权限
select,update(name,sex,age) 指定有某种权限 //对列表
数据库名表示方式:
*.* //服务器上的所有库所有表
数据库名.表名 //某个库下的某个表有权限
数据库.* //某个库里的所有表有权限
USER@"LOCALHOST //管理员授权时自定义的用户(mysql.user),于系统账户无关(/etc/passwd)。
//自定义的用户名要有标识性。
客户端地址:
% //所有主机
192.168.1.% //某个IP地址
HOSTNAME //对于主机名则须保证MYSQL服务器能解析
*.DOMAIN //也可以是区域。
identified by "PASSWORD"
//设置授权用户连接数据库服务器时使用的密码,是可选项,若授权时不写选项用户登录时则没有密码
with grant option; //设置授权用户是否有授权权限,可选项,若不写时则默认没有授权的权限。
如何查看当前数据库服务器上有哪些
查看mysql.user表可以知道。

mysql> select user,host,password from mysql,user;
+------+-----------------------+------------------+
| user | host | password |
+------+-----------------------+------------------+
| root | localhost | 7540a8d5245cc2d0 |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| | localhost | |
| | localhost.localdomain | |
//这两条记录可以使任意字符为用户名来登陆Mysql。所以将其删除。相当于匿名用户。
+------+-----------------------+------------------+
mysql> delete from mysql.user where user=("");
Query OK, 2 rows affected (0.00 sec)
mysql> show grants for USERNAME;
mysql> show grants forUSER@"%"

删除test这个公共库,因为只要能登陆上Mysql服务器时,则可以对这个test库进行任意操作。
//不过用户还是可以创建这个test这个库的。
对库的授权信息记录在mysql.db表内。
对用户的授权信息记录在mysql.user表内。
对表的授权信息记录在mysql.table_priv表内。
对字段的授权信息记录在mysql.columns_priv表内。
当要对某一用户授予授权权限时,也要给予mysql有权限。两者
对字段设置权限
grant select,update(id) on studb.t300[库,表] to USER@LOCALHOST;
//对字段id有update权限
撤销权限

mysql> revoke 权限列表 on 库,表 from USER@"LOCALHOST";
mysql> revoke all on DATA.TAB from USER@"LOCALHOST";
//只是撤销权限,并没有删除该用户。
所以,在mysql,user这个表内的用户记录删除即可。
mysql> drop from mysql.user where user=“USERNAME”;
mysql> flush privileges;
所以,删除用户要先撤销权限,再从mysql.user表中删除用户的记录。
给开发人员一个用户,只给予webdb库完全权限。如:

grant all on webdb.* towebuser@"10.10.10.%" identified by "password" ;
给自己一个管理服务器的用户,方便远程管理。如:

grant all on *.* to
root@"192.168.10.22" identified by "password" with grant option;
//IP地址是自己的电脑。
mysql> select user,host,password from mysql,user;
+------+-----------------------+------------------+
| user | host | password |
+------+-----------------------+------------------+
| root | localhost | 7540a8d5245cc2d0 |
| root | 192.168.10.22 | 7540a8d5245cc2d0 |
|webuse| 10.10.10.% | 7540a8d5245cc2d0 |
+------+-----------------------+------------------+
mysql> grant all on *.* to root@"192.168.1.100" identified by "20140103" with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> revoke grant option on *.* from root@"192.168.1.00";
//只移除授权权限。同样不能授权。
数据库图形管理工具
环境:
安装APACHE服务,Mysql
php-mysql.x86_64 0:5.1.6-39.el5_8
php-5.1.6-39.el5_8.x86_64.rpm
httpd-2.2.3-74.el5.x86_64.rpm
phpMyAdmin-2.11.11-all-languages.tar.gz
tar -xvf phpMyAdmin-2.11.11-all-languages.tar.gz -C /var/www/html/phpmyadmin/
写一个PHP测试页。test.php

<?php
phpinfo();
?>
测试:
http://localhost/test.php
[root@localhost phpmyadmin]# cp config.sample.inc.php config.inc.php
[root@localhost phpmyadmin]# vim config.inc.php
....
17 $cfg['blowfish_secret'] = 'tarena'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
....
这就是管理地址
http://localhost/phpmyadmin/index.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux Mysql