由于自己的AliCloud账号申请不足6个月,能够享受新用户云服务器ECS89元一年的优惠政策,所以就购买了一台云服务器,作为日常学习的使用。本文用来记录此次装载云服务器所遇到的一些问题及MySQL的安装过程。

一、云服务器的选配及配置

mysql服务器作用 mysql服务器配置要求_mysql服务器作用

后续步骤为:提货券的兑换;地域站点的选取以及系统的选配。这里我选取的为上海的站点(大陆境内站点随便选没什么差别),系统选装的为Centos7(具体到7.x没什么区别)。然后就是AliCloud那边的自动配置了。购买及配置较为简单,全部为AliCloud的傻瓜一站式操作。

二、安全组的设置

第一次服务器的使用,需要进行安全组的设置。进入到自己的控制台-实例与镜像-实例。这个时候就能够看到自己的服务器。勾选此台服务器:

mysql服务器作用 mysql服务器配置要求_MySQL_02

依次设置实例ID、重置实例密码;

在更多选项中选择密码/密匙。重置远程连接的密码。

注:实例密码为操作系统的密码,即为root用户名密码。在实例创建时可选设定,如果没有设定或者遗忘可在AliCloud的个人控制台上进行密码重置操作;远程链接密码是通过个人后台控制面板,通过内网形式直接链接到操作系统上,这种链接方式可以绕过安全组拦截,一般用于安全组将远程端口拦截时选择此种方法。

网络与安全组。将此实例加入到安全组里。

设置安全组规则

mysql服务器作用 mysql服务器配置要求_MySQL_03

在安全组规则中,采用快速创建规则。规则方向:入方向/出方向,均可采用,用于控制服务器访入与访出。授权策略:允许/禁止(不解释)。常用端口(TCP):控制端口的访入与访出(根据自己的习惯与用处)。授权对象:默认为0.0.0.0/0。至此服务器基本配置到此结束。

回到控制台实例中,点击远程连接。区域即为所选区域(一般默认不变);端口默认为22;用户名默认为root;密码是之前设置的实例密码。

三、本机ssh连接服务器免密设置

上一部分中,我们在AliCloud的网页实例中,远程连接到我们的服务器。但是,每当我们需要用到服务器时,便要通过AliCloud账号登录再来连接就显得比较麻烦。这里,通过ssh的命令在自己电脑终端来远程连接自己的服务器。

终端命令:ssh root@ip

root:远程连接的用户名;一般默认不变即为root。

ip:自己服务器公网ip。

回车后,输入自己的root用户实例密码即可连接。

注:Linux、Mac系统终端自带ssh命令;Windows系统不自带ssh命令,需要借助putty或Xshell客户端软件使用。

但是,每次我们在自己的电脑连接到服务器都需要通过ip地址,再由密码登录也比较麻烦。所以这里再介绍本机免密码登录服务器的方式。

思路:将自己的公有密匙添加到服务器端。

1.在本地生成一对公匙-密匙

ssh-keygen -t rsa

采用默认目录,不设置密码,一路回车即可。

mysql服务器作用 mysql服务器配置要求_MySQL_04

最终会在~/.ssh目录下生成id_rsa(密匙);id_rsa.pub(公匙)。

2.将公匙部署至服务器上

在本地命令执行:

方式一:scp ~/.ssh/id_rsa.pub root@公网IP地址:~/.ssh/authorized_keys

方式二:ssh-copy-id ~/.ssh/id_rsa.pub root@公网IP地址

以上两种方式即将本地公匙内容复制到远程服务器~/.ssh/authorized_keys的文件中。

至此,再次登录服务器只需一句ssh终端命令即可,不需要再输入密码。

到这里还不是最简洁的一种登录方式,因为我们还需要输入root用户账号,ip地址。所以后续还有更简洁的方式:

本地需要保存ssh登录主机的相关信息,在本地主机用户根目录下的.ssh文件内创建config文件,用于保存ssh登陆主机的相关信息

vim config(如果没有vim可以手动到此目下创建config文件)

编辑内容:

Host name #AAAAA为服务器主机名

HostName 39.97.170.231 #写服务器ip地址

User root #root为登陆用户名

Port 22 #主机端口,默认是22

IdentityFile /Users/.ssh/id_rsa #自己生成的私钥的文件路径

复制代码

注意:Host name是之前服务器设置中设置的实例id/名称

实例如下:

mysql服务器作用 mysql服务器配置要求_服务器_05

3.在服务器设置自动检验的信息

打开/etc/ssh/sshd_config文件

vim /etc/ssh/sshd_config找到

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

复制代码

取消注释。

至此,以后在自己本机上只需要采用:ssh liz_es即可登录。

四、 MySQL服务器的安装及相关配置

MySQ安装

这一部分记录云服务器端安装MySQL及相关配置

下载并安装MySQL官方的Yum Repository

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用上面的命令直接安装Yum Repository

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

安装MySQL服务器

root@localhost ~]# yum -y install mysql-community-server

[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch

MySQL数据库设置

MySQL的启动

[root@localhost ~]# systemctl start mysqld.service

MySQL的关闭

systemctl stop mysqld.service

查看MySQL运行状态

[root@localhost ~]# systemctl status mysqld.service

查找root初始密码

[root@localhost ~]# grep "password" /var/log/mysqld.log

登录MySQL

mysql -uroot -p

此时需要修改初始密码才能对数据库进行后续操作。又由于数据库默认的密码强度所设置的密码较为复杂,所以需要事先修改密码强度规则。否则在修改密码的过程容易出现以下错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requiremen

下面列出常用的关于密码设置方面的MySQL操作命令。

查看MySQL密码相关的全局参数:

mysql> select @@validate_password_policy;

mysql> SHOW VARIABLES LIKE 'validate_password%';

参数解释

validate_password_dictionary_file

插件用于验证密码强度的字典文件路径。

validate_password_length

密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

validate_password_mixed_case_count

密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count

密码至少要包含的数字个数。

validate_password_policy

密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。

validate_password_special_char_count

密码至少要包含的特殊字符数。

修改mysql参数配置

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)
mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_number_count=5;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=2;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> FLUSH PRIVILEGES

复制代码

可能最后两句在执行时,会报错。这是因为还没对初始密码进行修改。在修改完密码以后FLUSH PRIVILEGES,保证密码强度规则的更新。

MySQL密码的修改

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

MySQL用户的创建及权限设置

在MySQL中其实有一个内置且名为mysql的数据库,这个数据库中存储的是MySQL的一些数据,比如用户、权限信息、存储过程等。通过以下命令可查看当前数据库存在哪些用户;

SELECT User, Host FROM mysql.user;

可看见如下类似信息:

+---------------+-----------+
| User | Host |
+---------------+-----------+
| re_mysql | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+

复制代码Host代表用户所能连接的数据库主机

% 代表任何主机

localhost 代表只能在本机上使用的用户

创建用户

mysql>CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';

user_name:需要创建的用户名称。

host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则填‘localhost’ ;如果指定某台主机登录,则填'ip';如果允许从任意远程登陆,则填 ‘%’;

password:新创建用户的数据库登录密码,需符合密码强度规则。

授权用户

GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

PRIVILEGES:表示要授予什么权限。例如可以有 select ,insert ,delete,update等,如果要授予全部权力,则填ALL。

*.*:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填*.*,*是一个通配符,表示全部。

user_name:所要授权的用户。

'%':表面所有远程都可在此用户登录MySQL服务器,具体使用同节。

WITH GRANT OPTION:用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上WITH GRANT OPTION。

删除用户

DROP USER ‘user_name’@‘localhost/ip/*’

立即生效

flush privileges

修改mysql库里边的user表,限制root用户只能从哪个ip登录

update mysql.user set host='localhost' where user='root';

MySQL的远程连接

云服务器端部署好了MySQL。那么可以在本机中连接云服务器端的MySQL数据库。这里,我借助的是Navicat for MySQL。

创建连接:

mysql服务器作用 mysql服务器配置要求_MySQL_06

连接名:随便写。

主机:云服务器的公有IP。

端口:默认端口3306。

用户名:即在上一节中创建的新用户,并且是能够远程连接的用户。

编辑密码:MySQL这一用户的密码。

点击测试连接。

mysql服务器作用 mysql服务器配置要求_mysql_07

成功!

以后便可以在本机连接到服务器端的MySQL进行使用。

注意

当在虚拟机(Ubuntu16.04)中的MySQL采取同样的操作时,可能连接失败。在百度了一番博文以后,所采用的办法是在虚拟机的终端:

cd /etc/mysql 进入到my.cnf文件所在的目录下,sudo cp my.cnf my.cnf.bak,备份文件

打开配置,找到bind-address= 127.0.0.1这一行,注释掉。

重启数据库,使用Navicat进行连接。

参考文献