1. 用户添加及分配权限
1)登录mysql
#mysql -uroot –p
2)添加用户
mysql> user mysql //使用mysql数据库
mysql> grant all on *.* to zhangchuan@”%” identified by “123” ;
(执行完会在mysql.user表插入一条记录,all表示所有权限(包括增 删 改 查
等权限); *.* 表示所有数据库,zhangchuan为添加的用户名,123为密码,
%为匹配的所有主机,上面的信息都可以指定如grant select,update on db.* to
zhangchuan @localhost identified by ‘123″;)
mysql> flush privileges; //刷新系统权限表
3)修改用户
mysql> update user set user=’mysqladminqwe’ where user=’root’;
mysql> flush privileges;
4)删除用户
mysql> delete from mysql.user where user =’zhangchuan’ ;
mysql> flush privileges;
注:执行完sql语句后必须执行 flush privileges才可生效
2. 密码修改:
1)使用mysqladmin命令
# mysqladmin -u root password oldpass “newpass”
2)登录mysql客户端操作mysql.user
#mysql –u root
mysql> user mysql
mysql> UPDATE user SET Password = PASSWORD(‘newpass’) WHERE user = ‘root’;
mysql> flush privileges;
3. 忘记密码
1) 停止mysql服务
# /etc/init.d/mysqld stop
或: service mysqld stop
2)进入mysql的bin目录执行以下操作
# cd /usr/local/mysql/bin
# ./mysqld_safe –user=mysql –skip-grant-tables –skip-networking &
3)进入mysql客户端修改密码
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘newpassword’)
where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
4)启动mysql服务登录
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
4. 开放外网权限
上面已经说过,可以使用grant命令,不过我遇到使用grant开放权限后,使用本地客户端却连接不上。
解决方法如下:
1)检查3306端口是否开放给指定IP
使用nestat命令查看3306端口状态:
~# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
若出现以上结果表示3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问。
2)修改/etc/mysql/my.cnf文件。打开文件,找到下面内容:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
把上面这一行注释掉或者把127.0.0.1换成合适的IP,建议注释掉。
重新启动后,重新使用netstat检测:
~# netstat -an | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN