测试环境:CentOS6.8 和 MySQL5.5.4
一 需求
在项目开发的过程中可能需要开放自己的数据库给别人,但是出于安全的考虑,不能同时开放自己服务器里的其他数据库。那么可以新建一个用户,赋予该用户特定的数据库权限。
二 实现
1 新建用户
// root 用户登陆 MySQL mysql -uroot -p Enter password: // 新建用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","buff",password("buff")); // 刷新系统权限表 mysql>flush privileges;
这样就创建了一个名为:buff,密码为:buff 的用户。
2 登陆测试
mysql>exit // 用户 buff 登陆 MySQL mysql -ubuff -p Enter password: mysql>
说明新建的用户 buff 登陆成功。
3 用户授权
// root 用户登陆 MySQL mysql -uroot -p Enter password: // 为用户 buff 创建一个数据库 bluebuff mysql>create database bluebuff; // 授权用户 buff 拥有数据库 bluebuff 的所有权限 mysql>grant all privileges on bluebuff.* to buff@localhost identified by 'buff'; mysql>flush privileges;
1)授权wangli 使用密码123456从%任何主机连接到mysql服务器 grant all privileges on *.* to 'wangli'@'%' identified by '123456' with grant option; flush privileges;
//授权指定ip登录
GRANT select,insert,update,delete ON *.* TO root@"132.232.132.214" IDENTIFIED BY "*123";
flush privileges;
2)查看已经授权的用户 mysql> select host,user,authentication_string from mysql.user; +-----------+---------------+-------------------------------------------+ | host | user | authentication_string | +-----------+---------------+-------------------------------------------+ | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | % | wangli | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+---------------+-------------------------------------------+
修改 配置文件:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注销掉这个#bind-address = 127.0.0.1
然后重启mysql; 必须重启否则不生效!
service mysql restart
4 登录测试
// 用户 buff 登陆数据库 mysql -ubuff -p Enter privileges: // 显示数据库 mysql>show databases;
结果如下图所示,说明为用户 buff 授权成功
5 修改用户 buff 的密码
// root 用户登陆 MySQL mysql -uroot -p Enter password: // 修改用户 buff 的密码 mysql>update table mysql.user set password=password('buffer') where User='buff' and Host='localhost';
mysql>flush privileges;
6 删除用户
// root 用户登陆 MySQL mysql -uroot -p Enter password: // 删除用户 buff mysql>delete from mysql.user where User = 'buff' and Host = 'localhost'; mysql>flush privileges;
7 删除数据库
mysql>drop database bluebuff;
忘记密码可以修改
配置文件下:
vim /etc/mysql/mysql.conf.d/mysqld.cnf 的 skip-grant-tables 参数加上;然后重启就可以不用密码登录了。