|
mysql的用户管理 mysql的认证有两部分:1、登陆 2、执行sql语句
用来表识用户身份的,不是用户名,而是用户名加ip(kyo@1.1.1.1和kyo@2.2.2.2是两个不同身份的人)
mysql记录用户密码的不是文件,而是mysql数据库下的user表(mysql.user)。
>show databases;
>use mysql;
>show tables;
>select * from user \G; //共六行数据。查看权限等信息
默认用户是不是能远程登陆的,因为mysql.user中没有可以远程登陆的用户。
添加远程登陆用户
>show grants for root@localhost;
>grant all privileges on *.* to 'mary'@'192.168.18.254' identified by '123'; //mary是用户名,ip是从哪里登陆,这里表示只允许从254上登陆;改成18.%表示允许18.0这个网段登陆;all privileges表示给mary用户什么样的权限。权限包括:all privileges(最大权限),增删改查;*.*表示权限适用哪个库,哪个表,*.*表示所有库和所有表。
权限
global(全局)----->database(某个库)---->table(某张表)---->column(某列)
global权限会表识在mysql.user表中。
database权限表示在mysql.db表中。
table权限标记在mysql.tables_priv表中。
column权限标记在mysql.colums_priv表中。
>flush privileges; //刷新权限,立即生效。
>\s //可以查看登陆的用户身份,使用的哪个库,连接id,连接的服务器。
登陆测试
***18.254***
mysql -u mary -h 192.168.18.42 -p123 //可以登陆,在其他机上不能登陆
all privileges //最大权限
usage //最小权限,用户只能登陆,不能进行其他任何操作,test库是测试库,任何人都可以进行操作,为了安全,生产环境下,要删除test库。
>grant all privileges on *.* to 't1'@'%' identified by '123';
>grant all privileges on vfast.* to 't2'@'%' identified by '123';
>grant all privileges on vfast.a to 't3'@'%' identified by '123';
>grant select on vfast.a to 't4'@'%' identified by '123';
>grant usage on *.* to 't5'@'%' identified by '123';
>create database vfast;
>use vfast;create table a (a int);
>insert into a values (1);
>flush privileges;
>select * from test \G;
为了安全,生产环境下,要删除test库
>select * from user \G;
第四行的user和password都为空,这个是匿名账号,在本地登陆。
取消权限(revoke)
针对t1的所有库,所有表,取消所有权限
>revoke all privileges on *.* from 't1'@'%';
>show grants for 't1'@'%'; //查看具体权限,权限变成usage
>revoke select,insert on test.* from 't1'@'%'; //拿走部分权限
>flush privileges;
删除远程登陆用户
>drop user 't1'@'%';
修改密码
1、(主要)
update mysql.user set password=password('456') where user='t5'; //修改T5密码,密码是加密的,所以用password()函数加密,t5是用户名。
>flush privileges;
2、
>grant usage on *.* to 't5'@'%' identified by '123'; //用这条命令也可以修改密码。
假如忘记了登录mysql的root用户的密码
#/etc/init.d/mysqld stop
手动启动数据库
#mysqld_safe --skip-grant-tables --skip-networking &
#mysql //登录
(这种情况下,就不能使用grant来修改密码,只能用update来修改密码)
>update mysql.user set password=password('123456') where user='root'; //重新修改密码
#/etc/init.d/mysqld restart //重启数据库
skip-grant-tables //跳过赋权表
skip-networking //跳过网络
#mysql -u -p //也可以登录数据库
#\s //查看当前登录用户(-p@localhost)这个是匿名账号
删除匿名账号记录
>delete from mysql.user where user='';
>flush privileges;
作业
1.1.1.1 apache+php+php-mysql
有三个虚拟主机,每个虚拟主机安装phpwind论坛
documentroot
/tmp/bbs1
/tmp/bbs2
/tmp/bbs3
1.1.1.2 安装mysql-server
每个论坛都有自己的数据库, 权限:基于用户和库
user1 database1
user2 database2
user3 database3
客户端访问可以看到三个论坛
答案:
***apache+php23***
需要论坛包phpwind.zip
mkdir -pv /www/docs/bbs{1,2,3}/upload
chmod 777 /www/docs -R
unzip phpwind.zip
cd /PHPWind_UTF8_7.3/upload
cp -fr * /www/docs/bbs{1..3}/upload
yum install httpd php php-mysql -y
vim /etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.18.23:80
</VirtualHost>
<VirtualHost 192.168.18.23:8080>
DocumentRoot "/www/docs/bbs1/upload"
ServerName www.bbs1.com
</VirtualHost>
</VirtualHost>
<VirtualHost 192.168.18.23:8080>
DocumentRoot "/www/docs/bbs2/upload"
ServerName www.bbs2.com
</VirtualHost>
</VirtualHost>
<VirtualHost 192.168.18.23:8080>
DocumentRoot "/www/docs/bbs3/upload"
ServerName www.bbs3.com
</VirtualHost>
***mysql-server42***
yum install mysql-server -y
mysql
创建数据库
>create database bbs1;
>create database bbs2;
>create database bbs3;
创建账号
>grant all all privileges on bbs1.* to 'bbs1'@'%' identified by '123';
>grant all all privileges on bbs2.* to 'bbs2'@'%' identified by '123';
>grant all all privileges on bbs3.* to 'bbs3'@'%' identified by '123';
>flush privileges
客户端测试
***client12***
vim /etc/hosts
192.168.18.23 www.bbs1.com www.bbs2.com www.bbs3.com
firefox &
连接数据库,安装论坛
数据库服务器:192.168.18.42
数据库用户名:bbs1
数据库密码:123
数据库名:bbs1
|
|