数据库管理员密码设置

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  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。所以将其删除。相当于匿名用户。
+------+-----------------------+------------------+

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,user这个表内的用户记录删除即可。

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.gz
tar -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! */
....

这就是管理地址