数据库管理员密码设置
mysqladmin
[root@localhost ~]# rpm -qf /usr/bin/mysqladmin mysql-5.0.95-3.el5 |
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 ADDR" =password("NEWPASSWORD")//Mysql>set password for " =password("123QWE")授权用户登录后修改自己的密码Mysql> set password=password("NEWPASSWORD") |
用户授权 权限撤销
用户授权(默认情况下,只有数据库管理从服务器本登陆才有用户授权权限)
mysql> select user();+----------------+| user() |+----------------+| | +----------------+1 row in set (0.00 sec) |
mysql> show grants; +---------------------------------------------------------------------------------------------------------------+| Grants for|+---------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY PASSWORD '7540a8d5245cc2d0' WITH GRANT OPTION | +---------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec) GRANT ALL PRIVILEGES *.* //所有库.表拥有完全权限 //连接地址 WITH GRANT OPTION//拥有授权权限 |
授权命令格式:
mysql> grant 权限列表 on DATANAME to ” identified by “PASSWORD” with grant option;
权限列表表示:all 所有权限select,delete,update 指定有某种权限select,update(name,sex,age) 指定有某种权限 //对列表数据库名表示方式:*.* //服务器上的所有库所有表数据库名.表名 //某个库下的某个表有权限数据库.* //某个库里的所有表有权限 //管理员授权时自定义的用户(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> delete from mysql.user where user=(""); Query OK, 2 rows affected (0.00 sec)mysql> show grants for USERNAME; mysql> show grants for" |
删除test这个公共库,因为只要能登陆上Mysql服务器时,则可以对这个test库进行任意操作。//不过用户还是可以创建这个test这个库的。
对库的授权信息记录在mysql.db表内。对用户的授权信息记录在mysql.user表内。对表的授权信息记录在mysql.table_priv表内。对字段的授权信息记录在mysql.columns_priv表内。当要对某一用户授予授权权限时,也要给予mysql有权限。两者对字段设置权限grant select,update(id) on studb.t300[库,表] to ;//对字段id有update权限
撤销权限
mysql> revoke 权限列表 on 库,表 from ";mysql> revoke all on DATA.TAB from "; //只是撤销权限,并没有删除该用户。 |
mysql> drop from mysql.user where user=“USERNAME”;mysql> flush privileges; |
所以,删除用户要先撤销权限,再从mysql.user表中删除用户的记录。
给开发人员一个用户,只给予webdb库完全权限。如:
grant all on webdb.* to" identified by "password" ; |
给自己一个管理服务器的用户,方便远程管理。如:
grant all on *.* to " 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 " identified by "20140103" with grant option;Query OK, 0 rows affected (0.00 sec)mysql> revoke grant option on *.* from ";//只移除授权权限。同样不能授权。 |
数据库图形管理工具
环境:安装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.gztar -xvf phpMyAdmin-2.11.11-all-languages.tar.gz -C /var/www/html/phpmyadmin/写一个PHP测试页。test.php
<?php phpinfo();?> |
测试:
[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! */.... |
这就是管理地址