1.mysql忘记密码操作
1.1 简述
首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
1.2 修改MySQL的登录设置
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
1.3 重新启动mysqld
/etc/init.d/mysqld restart ( service mysqld restart )
1.4 登录并修改MySQL的root密码
mysql> USE mysql ;
mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
mysql> flush privileges ;
mysql> exit
1.5 将MySQL的登录设置修改回来,重启
将刚才在[mysqld]的段中加上的skip-grant-tables删除
重新启动mysqld
2.mysql的远程授权
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在某些情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:
GRANT 命令格式:
mysql> grant 权限 on 数据库对象 to 用户
mysql> grant all privileges on testdb to dba@'localhost'
关键字 “privileges” 可以省略
2.1 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限
国际惯例先登录mysql
mysql> mysql -uroot -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit
这里的youpassword 可以任意设置,并不是原来root的密码
2.2 允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,
mysql> mysql -uroot -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'112.120.20.11' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit
2.3 允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";
2.4
删除用户授权,需要使用REVOKE命令,具体命令格式为: REVOKE privileges ON 数据库[.表名] FROM user-name; 具体实例,先在本机登录mysql: mysql -u root -p"youpassword" 进行授权操作: GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword"; 再进行删除授权操作: REVOKE all on TEST-DB from test-user; ****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户: DELETE FROM user WHERE user="test-user"; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit