在搞定VPS环境后,我在VPS上安装了mysql,并开启了远程控制及权限控制,本文简单介绍一下安装及配置的方法。
1. mysql安装
使用apt安装即可,命令操作如下:
sudo apt-get update
sudo apt-get install mysql-server
安装过程中有可能会提示输入密码,可以输入空或者输入目标密码,密码可以改的,比如安装成功后,root用户登陆mysql,修改root用户密码,如下:
update mysql.user set authentication_string=password('new password') where user='root' and Host ='localhost';
flush privileges;
或者使用mysqladmin修改密码,如下:
mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
如上步骤就可以将mysql root用户密码修改
2. mysql密码重置
以上都是修改mysql用户密码的方式,前提是你事先知道用户密码。但如果root用户密码也忘记了,就不能通过上述方式修改了,可以选择重置密码。介绍修改密码之前,先介绍一个文件/etc/mysql/debian.cnf其主要内容如下图: 里面有一个debian-sys-maint用户,这个用户只有Debian或Ubuntu服务器才有,所以如果服务器是Debain或Ubuntu,debian-sys-maint是个Mysql安装之后自带的用户,具体作用是重启及运行mysql服务。所以如果忘了root密码,可以通过这个用户来重设密码。下面介绍具体操作:
#1. 查看debian用户用户名及密码
vi /etc/mysql/debian.cnf
#2. 使用debian-sys-maint用户登陆mysql
mysql -u debian-sys-maint -p *****
#3. 修改相应用户密码(比如设置root用户密码123456)
use mysql
update mysql.user set authentication_string=password('123456') where user='root'
#4. quit退出mysql,并重启mysql服务
service mysql restart
3. 创建远程用户并授权
使用root用户登陆mysql,并查看现有用户:
select Host,User,authentication_string from mysql.user;
User表示用户名,Host表示允许用户登陆的ip地址,authentication_string为加密后的密码。现在我们创建一个任何ip都可以登陆的用户test,如下:
create user test identified by '123456';
可以看到test用户已经创建完成了,允许所有ip登陆。接着对test用户进行授权,如下:
grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option;
flush privileges ;
all代表接受所有操作,比如 select,insert,delete….; *.* 代表所有库下面的所有表;% 代表这个用户允许从任何地方登录;为了安全期间,这个%可以替换为你允许的ip地址。如上zhuoli用户就有两个ip可以访问,可以通过两次上述grant命令授权两个ip登陆。
最后为了可以远程登陆,还要做一步重要设置,取消mysql本地ip绑定,首先要确定mysql配置文件位置,一般都是在/etc/mysql目录,目录中有个文件mysql.cnf,有的mysql版本直接将配置写在这个文件中,也有的mysql版本在这个文件中只是记录mysql配置文件的地址,我们的目标是找到最终的配置文件。比如我的mysql版本/etc/mysql/mysql.cnf文件如下:
最终确定我的配置文件路径为/etc/mysql/mysql.conf.d/mysqld.cnf,打开文件,bind-address修改为0.0.0.0,如下:
#1. 将bind-address修改为0.0.0.0
bind-address = 0.0.0.0
#2. 退出vim,重启mysql服务
service mysql restart
4. 删除用户
delete from mysql.user where User='test' and Host='%';