阿里云 ECS 本地配置与初始化|学习笔记

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 快速学习基于阿里云 ECS 本地配置与初始化,这节课进行分享 MySQL 实操课程的第二小节,MySQL 的基本配置与远程访问,这个小节包含两部分内容,第一部分是基于阿里云 ECS 本地安装,在上一节的课程当中,已经分享了怎么在阿里云的本地安装 MySQL,并且已经把 MySQL 安装版成功上传到申请的阿里云服务器上和解压。这节课将进行 MySQL 的云主机以及 MySQL数据库进行相关配置与初始化。第二部分主要讲解阿里云的 RDS 库,包括如何去使用和需要进行哪些准备工作?以上就是本节课程需要进行分享的。下面进行讲解MySQL 的本地配置。

开发者学堂课程【MySQL 实操课程基于阿里云 ECS 本地配置与初始化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/717/detail/12801


基于阿里云 ECS 本地配置与初始化

 

目录

一、MySQL 配置

二、使用初始密码登录 MySQL

三、重置 MySQL 密码

四、使用 MySQL 新密码登录

五、总结

 

一、MySQL 配置

1、初始化 MySQL 步骤

⑴使用 mysqld 命令来指定相关的参数完成 MySQL 的初始化。

⑵初始化完之后,系统会生成一个 MySQL 登录的临时密码,将该密码复制下来,后续登陆会要使用到。

2、初始化 MySQL 的演示(含错误版)

那么在这里初始化执行这个命令之前,它是要进行一些准备工作的。包括怎样的准备工作呢?包括要去创建的这个系统的账号,创建一个 MySQL 的系统帐号。并且要去给这个系统帐号去授权,同时这里给定的系统帐号,现在是没有的,像etc/my.cnf 之前是没有的,需要去手动的给它创建好。并且把一些基本的配置,把它放 my.cnf 里面,否则的话会出现这个配置文件找不到的情况。同时像 MySQL 的基础目录,这里叫 /usr/local/mysql,解压后是一个很长的目录叫 MySQL 的名字,就需要给它改名或者给它直接加一个软链接。同时还指定了这个 MySQL 的数据目录,这里显示的是 /usr/local/MySQL/data/ 的一个目录,那么这里直接使用/ data/ MySQL / 作为它的一个数据目录。所以说这里有一个参数叫 usr,可以看到在 MySQL 这里,如:

[root@iZwz9grf5rktb5exdZ datal]# /usr/local/mysql/bin/mysqld--defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql --initialize

所以说要先去创建一个 MySQL 的一个用户。然后接下来就打开这个 cloud shell 这个工具,开始做一些工作。首先,还是一样的远程登录这台服务器,复制这个 IP:47.122.159.55,通过 ssh root 进行连接,输入密码连接成功后进入 usr/local,找到之前解压的 mysql 进行重命名 mysql,如:

shell@Alicloud:~$ ssh root@47. 112.159.55

root@47.112.159.55's password:

Last login: Sat Aug 15 19:47:18 2020 from 59. 42.7.247

Welcome to Alibaba Cloud Elastic Compute Service !

[ root@iZwz9bize6nk8hug8j0vywZ ~]# cd /usr/local

[ root@iZwz9bize6nk8hug8j0vywZ local]# ll

drwxr-xr-x. 9 7161 31415 4096 Jun 2 21:11 mysql-5.7.31-linux-glibc2.12-x86_64

[root@iZwz9bize6nk8hug8j0vywZ local]# mv mysql-5.7.31-linux-glibc2.12-x86_64/ mysql

[root@iZwz9bize6nk8hug8j0vywZ local]# ll

drwxr-xr-x. 9 7161 31415 4096 Jun 2 21:11 mysql

接下来第一步工作首先要进行创建 MySQL 账号,而在创建账号前要先添加一个用户组,在这里通过 groupadd 命令增加一个用户组。

[root@iZwz9bize6nk8hug8j0vywZ local]# groupadd mysql

[root@iZwz9bize6nk8hug8j0vywZ local]#ll

这样就创建好了一个用户组,然后给这个 MySQL 的用户添加到说的这个 MySQL 的用户组,如:

[root@iZwz9bize6nk8hug8j0vywZ local]# useradd -g mysql  mysql -s /sbin/nologin

这样就添加了一个 MySQL 的用户,这是一个免登录的用户,等会在初始化的时候会用到这个用户。

然后接着给它授权,如下将 mysql 目录授权给 mysql 用户组中的 mysql,因为等会会对这个 mysql 目录进行读写的操作,还有进行 mysql 数据存储的目录也进行授权,这里会提示还没有这个目录,所以需要创建,创建成功后再次进行授权,如:

[root@iZwz9bize6nk8hug8j0vywZ local]# chown mysql :mysql -R /usr/ local/mysql

[root@iZwz9bize6nk8hug8j0vywZ local]# chown mysql :mysql -R /data/mysql

chown: cannot access / data/mysql: NO such file or directory

[root@iZwz9bize6nk8hug8j0vywZ local]# mkdir -p /data/ mysql

[root@iZwz9bize6nk8hug8j0vywZ local]# chown mysql :mysql -R /data/ mysql

授权成功后还差一个 etc/my.cnf 配置文件,下面给它去创建一下。那么在这里也是一样的给它打开这个 cloud shell 文件。

[root@iZwz9bize6nk8hug8j0vywZ local]# vi /etc/my.cnf

可以看到,这个里面其实已经默认的生成了这样的一些文件。然后你要把它改成一些指定的目录。这个是阿里云安装的时候,它会自动的帮你去生成这样的一些文件。如果是没有的话,你要去主动的创建这样一个文件,修改如下:

[mysqld]

datadir=/data/ mysql

socket=/ tmp/ mysql . sock

user mysql

# Disabling symbolic links is recorumended to prevent assorted security risks

symbolic-links=0

[mysqld safe]

log-error-/data/log/mysqld. log

pid-file-/data/run/mysqld/mysqld.pid

这里简单说一下这几个配置文件,datadir 实际上讲的是数据的存放目录,对于参数的指定,可以在初始化的时候进行指定,如果不想指定就会进行读取配置文件中的配置进行指定,socket 是在 mysql 服务启动时会生成的文件,需要进行指定保存的路径,user 实际上指定的是 mysql 用户,如开头 mysqld 表示第一组,每一组有不同的参数配置,平时很容易混淆不同组的配置,后面的是 mysqld 安全模式下保存的安全日志保存路径和 pid 运行进程。然后进行保存,保存后就可以进行一些初始化的工作。

初始化如下:

[root@izwz9bize6nk8hug8j0vywZ local]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql --initialize

…root@localhost: srlUCXt-N0oZ

此时回车后看最后一行,会生成一个临时的密码,把这个临时密码复制下来,待会登录进去。这个命令前面的目录代表 MySQL 的安装目录,MySQL 的所有命令都是保存在 bin 目录之下,而 d_safe 表示以一种安全模式进行启动,安全模式的作用就是启动完后仍会去监控 MySQL 的进程,一旦发现 MySQL 的异常会进行重启服务,而且会把前面在 mysqld 中配置的 mysqld_safe 选项运行的日志打印到指定目录,后面的目录是指定配置文件,加上&符号,表示是进行后台启动。

紧接着还不能去登录,因为这个 mysql 的服务还没有启动。那这个时候怎么办呢?要先把这个 mysql 服务给它启动,启动如下:

[root@izwz9bize6nk8hug8j0vywZ local]# /usr/local/mysql/bin/mysqld_safe --defaults- file /etc/my. cnf &[root@izwz9bize6nk8hug8j0vywZ local]# 2020-08-15T12:28:20.7946922 mysqld_safe error: log-error set  to '/data/log/mysqld.log', however file don't exists. Create writable for user ' mysql[root@izwz9bize6nk8hug8j0vywZ local]# ps -ef |grep mysqld 启动指令回车后会显示报错为目录 /data/log/mysqld.log 不存在,是因为前面授权时没有进行这个目录授权,这里需要重新加上授权。可以进行查看后发现确实没有启动成功,所以这里有几种方案,第一种是把这个目录放到原来的目录下面,第二种就是对这个目录再进行授权,这里进行授权的演示。授权时提醒目录不存在,所以要进行创建,成功后再进行授权,此时提醒文件不存在,所以就要进行创建 my.cnf 文件,写入配置内容后进行保存退出,再次进行授权:可以进行查看后发现确实没有启动成功,所以这里有几种方案,第一种是把这个目录放到原来的目录下面,第二种就是对这个目录再进行授权,这里进行授权的演示。

授权时提醒目录不存在,所以要进行创建,成功后再进行授权,此时提醒文件不存在,所以就要进行创建 my.cnf 文件,写入配置内容后进行保存退出,再次进行授权:

[root@izwz9bize6nk8hug8j0vywZ local]# chown mysql :mysql -R /data/log

[root@izwz9bize6nk8hug8j0vywZ local]# mkdir -P /data/log

[root@izwz9bize6nk8hug8j0vywZ local]# chown mysql :mysql -R /data/log

[root@izwz9bize6nk8hug8j0vywZ local]# /usr/local/mysql/bin/mysqld_safe --defaults- file=/etc/my.cnf &

[root@izwz9bize6nk8hug8j0vywZ local]# ps -ef |grep mysqld

[root@izwz9bize6nk8hug8j0vywZ local]# vi /data/log/mysqld.log

[root@izwz9bize6nk8hug8j0vywZ local]# /usr/local/mysql/bin/mysqld_safe - -defaults- file=/etc/my.cnf &

[root@izwz9bize6nk8hug8j0vywZ local]# 2020-08-15T12:30:24. 5375202 mysqld_safe Logging to ' /data/ 1og/mysqld. log'.

回车后进行查看 MySQL 是否启动成功,可以查看到并没有启动成功:

[root@izwz9bize6nk8hug8j0vywZ local]# ps -ef |grep mysqld

原因是前面并没有授权完全,所以需要重新进行授权。再次进行授权操作如下,与上面相比要多授权一个 mysql.pid 目录:

然后进行查看 MySQL 是否启动成功,可以发现依然没有。此时可以进行查看打印日志,日志中说明是没有权限创建 mysql.pid 目录的,所以启动失败:

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# tail -f -n 100 /data/ log/ mysqld. log

…Can’t create/write to file' , data/ run/ mysqld/ mysqld.pid' (Errcode:13 -Permission denied)

打印日志时已经说明了这里是不能往 mysql.pid 中这样写,因为没有权限。所以这里把整个目录重新授权然后进行启动,如下:

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# chown -R mysql /data/run/mysqld

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# /usr/local/mysql/bin/mysqld_safe --defaults- file-/etc/my. cnf

启动后发现被阻塞,因为使用的是前台启动。此时,通过另外一个窗口进行查看是否启动成功,如下启动成功:

[root@izwz9bize6nk8hug8j0vywZ ~]# ps -ef |grep mysqld

root …

mysql 4060 3863…

root…

然后可以使用 MySQL 客户端进行连接,连接时要输入密码,密码则为前面生成的初始密码,这个初始密码也会写入到日志文件当中,输入后回车则成功进入:

[root@iZwz9bize6nk8hug8jOvywZ ~]# /usr/ local/mysql/bin/mysql -uroot -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g .

Your MySQL connection id is 3

Server version: 5.7.31

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved .

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners .

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement .

 

二、使用初始密码登录 MySQL

1、步骤

(1)使用 MySQL 命令行客户端工具 mysq| 命令连接 MySQL 服务端

(2)用户名为 root ,密码为 MySQL 初始化时生成的临时密码

2、演示

成功进入 MySQL 后,因为前面的密码是临时密码,对于临时密码在执行 mysql 指令时,如 show databases 指令,会提示必须重置密码,如:
mysql> show databases ;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

 

三、重置 MySQL 密码

1、步骤

(1)第一次使用 MySQLI 临时密码登录进去后,要求重置密码

(2)设置新密码

(3)设置新密码永不过期

2、演示

重置密码使用 set password 指令设置为000000,然后通过 alter user 'root' 设置对应的本机 localhost 当前的密码永不过期,然后 flush 设置权限

四、使用 MySQL 新密码登录

1、步骤

(1)使用 MySQL 命令行客户端工具 mysq| 命令连接 MySQL 服务端

(2)至此,成功完成了阿里云 ECS 本地安装 MySQL 的初始化工作。

2、演示

如上设置成功后退出,然后使用新的密码进行登录登录成功后再执行show databases,就不会报权限错误:

mysql> exit

mysql> show databases ;

+--------------+

|  Database  |

在上面步骤中登录后进行返回的信息有 MySQL monitor 是 MySQL 的监视器,connection id 是当前连接 id,这里当前连接 id 为4,Server Version 是当前服务版本为5.7.31,并且是 MySQL 的社区版,show databases 指令的作用是查看当前MySQL 数据库的实例名称和有那些数据库。

 

五、总结

1、总结

首先要使用 mysqld 命令来完成初始化之前要进行一些准备工作,首先要进行创建MySQL 账号和添加用户组,并且还要给 MySQL 目录进行授权,指定写入的权限,涉及到的目录有--basedir 和数据存放目录--datadir,而没有这些目录的要提前创建好,并且进行授权否则就会报上面进行演示的错误。以上是为了演示报错的过程和提示在工作中需要注意。

2、log 日志查看

这里可以打开 mysqld.log 日志进行查看,这个日志是 MySQL 进行命名的,打开日之后可以看到整个 MySQL 启动过程,而且也会提示当前 sock 所在其他端口下和密码过期,密码需要在客户进行改变重置,日志中都会进行明确说明

3、查看 pid 文件

除了可以查看 log 日志,还可以查看 mysqld.pid。查看如下:

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# tail -f -n 100 mysqld. pid

4060

^C

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# ps -ef |grep mysqld

root   3863  3616  0 20:43 pts/3…

mysql 4060  3863  0 20:45 pts/3…

root   4231  4030  0 20:57 pts/4…

因为这个 mysql 是安全启动 mysqld_safe,是可以强制去掉的,但执行后再进行查看会发现启动了一个新的 mysql,叫4247,如:

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# ki1l -9 4060

[root@iZwz9bize6nk8hug8jOvywZ mysqld]# ps ef |grep mysqld

root  3863  3616  0 20:43 pts/3…

mysql 4060  4247  0 20:57 pts/3…

root  4231  4279  0 20:57 pts/4…

所以这就是安全模式的优点,他会强制性监视运行情况,而运行停止后则会进行重启。这里提示在上面配置权限的时候,是可以将权限配置到 mysql 下面的,就不用配置其他那么多文件夹权限,如:

[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

user=mysql

# Disabling symbolic- links is recormended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/data/mysql/log/mysqld. log

log-error-=/data/log/mysqld. log

pid-file=/data/run/mysqld/mysqld.pid

到这里 MySQL 就已经成功启动了,并且可以远程连接和进行了初始化工作。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
23 1
|
20天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
1天前
|
网络协议 对象存储
阿里云oss配置自有域名
阿里云oss配置自有域名
9 1
|
2天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得
|
9天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
10天前
|
存储 弹性计算 安全
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
2核2G、2核4G配置是很多个人和企业建站以及部署中小型的web应用等场景时首选的云服务器配置,这些配置的租用价格也是用户非常关心的问题,本文为大家整理汇总了2024年阿里云服务器2核2G、2核4G配置不同实例规格及地域之间的收费标准,同时整理了这些配置最新活动价格,以供大家参考和选择。
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
|
13天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
13天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
15天前
|
弹性计算 安全
电子好书发您分享《阿里云第八代企业级ECS实例,为企业提供更安全的云上防护》
阿里云第八代ECS实例,搭载第五代英特尔至强处理器与飞天+CIPU架构,提升企业云服务安全与算力。[阅读详情](https://developer.aliyun.com/ebook/8303/116162?spm=a2c6h.26392459.ebook-detail.5.76bf7e5al1Zn4U) ![image](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_f422f7cb775444bbbfc3e61ad86800c2.png)
35 14
|
16天前
|
安全 关系型数据库 MySQL
国产麒麟服务器等保二级 配置规范(一)
国产麒麟服务器等保二级 配置规范(一)
33 0