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

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

此次我选购的服务器网址:http://aliyun.langsan.com/?bd_vid=8575091722087683835。下图为此次所购的云服务器配置: 服务器配置

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

二、安全组的设置

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

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

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

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

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

  • 设置安全组规则 在安全组规则中,采用快速创建规则。规则方向:入方向/出方向,均可采用,用于控制服务器访入与访出。授权策略:允许/禁止(不解释)。常用端口(TCP):控制端口的访入与访出(根据自己的习惯与用处)。授权对象:默认为0.0.0.0/0。至此服务器基本配置到此结束。
    回到控制台实例中,点击远程连接。区域即为所选区域(一般默认不变);端口默认为22;用户名默认为root;密码是之前设置的实例密码。

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

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

  • root:远程连接的用户名;一般默认不变即为root。
  • ip:自己服务器公网ip。
    回车后,输入自己的root用户实例密码即可连接。
    注:Linux、Mac系统终端自带ssh命令;Windows系统不自带ssh命令,需要借助putty或Xshell客户端软件使用。
    但是,每次我们在自己的电脑连接到服务器都需要通过ip地址,再由密码登录也比较麻烦。所以这里再介绍本机免密码登录服务器的方式。
    思路:将自己的公有密匙添加到服务器端。
1.在本地生成一对公匙-密匙

ssh-keygen -t rsa
采用默认目录,不设置密码,一路回车即可。
最终会在~/.ssh目录下生成id_rsa(密匙);id_rsa.pub(公匙)。

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

在本地命令执行:
方式一:scp ~/.ssh/id_rsa.pub [email protected]公网IP地址:~/.ssh/authorized_keys
方式二:ssh-copy-id ~/.ssh/id_rsa.pub [email protected]公网IP地址
以上两种方式即将本地公匙内容复制到远程服务器~/.ssh/authorized_keys的文件中。

至此,再次登录服务器只需一句ssh终端命令即可,不需要再输入密码。
到这里还不是最简洁的一种登录方式,因为我们还需要输入root用户账号,ip地址。所以后续还有更简洁的方式:
本地需要保存ssh登录主机的相关信息,在本地主机用户根目录下的.ssh文件内创建config文件,用于保存ssh登陆主机的相关信息
vim config(如果没有vim可以手动到此目下创建config文件)
编辑内容:

1
2
3
4
5
Host name #AAAAA为服务器主机名
HostName 39.97.170.231 #写服务器ip地址
User root #root为登陆用户名
Port 22 #主机端口,默认是22
IdentityFile /Users/.ssh/id_rsa #自己生成的私钥的文件路径

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

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

打开/etc/ssh/sshd_config文件
vim /etc/ssh/sshd_config找到

1
2
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys

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

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

MySQ安装

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

  1. 下载并安装MySQL官方的Yum Repository
    [[email protected] ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    使用上面的命令直接安装Yum Repository
    [[email protected] ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
  2. 安装MySQL服务器
    [email protected] ~]# yum -y install mysql-community-server
    [[email protected] ~]# yum -y remove mysql57-community-release-el7-10.noarch
  3. MySQL数据库设置
    MySQL的启动
    [[email protected] ~]# systemctl start mysqld.service
    MySQL的关闭
    systemctl stop mysqld.service
    查看MySQL运行状态
    [[email protected] ~]# systemctl status mysqld.service
    查找root初始密码
    [[email protected] ~]# 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参数配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
可看见如下类似信息:

1
2
3
4
5
6
7
8
+---------------+-----------+
| User | Host |
+---------------+-----------+
| re_mysql | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+

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

% 代表任何主机
localhost 代表只能在本机上使用的用户

  1. 创建用户
    mysql>CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
    user_name:需要创建的用户名称。
    host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则填‘localhost’ ;如果指定某台主机登录,则填’ip’;如果允许从任意远程登陆,则填 ‘%’;
    password:新创建用户的数据库登录密码,需符合密码强度规则。

  2. 授权用户
    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。

  3. 删除用户
    DROP USER ‘user_name’@‘localhost/ip/*’

  4. 立即生效
    flush privileges

  5. 修改mysql库里边的user表,限制root用户只能从哪个ip登录
    update mysql.user set host='localhost' where user='root';

MySQL的远程连接

云服务器端部署好了MySQL。那么可以在本机中连接云服务器端的MySQL数据库。这里,我借助的是Navicat for MySQL
创建连接:
连接名:随便写。
主机:云服务器的公有IP。
端口:默认端口3306。
用户名:即在上一节中创建的新用户,并且是能够远程连接的用户。
编辑密码:MySQL这一用户的密码。
点击测试连接。
成功!
以后便可以在本机连接到服务器端的MySQL进行使用。

注意

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

  • cd /etc/mysql 进入到my.cnf文件所在的目录下,sudo cp my.cnf my.cnf.bak,备份文件
  • 打开配置,找到bind-address= 127.0.0.1这一行,注释掉。
  • 重启数据库,使用Navicat进行连接。

参考文献

[1] centos7下安装mysql(完整配置):https://blog.csdn.net/baidu_32872293/article/details/80557668
[2] mysql 密码强度规则设置:https://blog.csdn.net/u014236541/article/details/78244601
[3] MYSQL的创建用户,授权用户,删除用户,查看用户:https://blog.csdn.net/u014453898/article/details/55064312
[4] mysql查看所有用户:https://blog.csdn.net/qq_37996815/article/details/78934536
[5] Ubuntu 16.04 安装使用MySQL:https://blog.csdn.net/vXueYing/article/details/52330180
[6] 使用navicat 连接虚拟机上的MySQL数据库:https://www.jianshu.com/p/8fa82acb16e9
[7] SSH连接服务器 本地记住用户名及密码:https://blog.csdn.net/persist_xyz/article/details/90231433


Comment