s查找mysql服务_MySQL菜鸟实录(一):MySQL服务安装实战

本文介绍了在CentOS 7系统上安装MySQL服务的详细过程,包括检查系统环境、清理历史残留、下载安装源、安装mysql-server、配置及启动服务,以及遇到的常见问题和解决方案。内容涵盖了从确认系统需求到设置初始密码的全过程。
摘要由CSDN通过智能技术生成

CentOS 7

基本信息

系统版本: CentOS 7.3 64bit

系统配置: 4vCPUs | 8GB

磁盘空间:

[root@ecs-ce5a-0001 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 40G 17G 22G 44% /

devtmpfs 3.9G 0 3.9G 0% /dev

tmpfs 3.9G 0 3.9G 0% /dev/shm

tmpfs 3.9G 25M 3.8G 1% /run

tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup

tmpfs 783M 0 783M 0% /run/user/0

/dev/vdb1 493G 70M 467G 1% /data

[root@ecs-ce5a-0001 ~]#

检查历史残留

使用rpm查询功能,查询本机是否有安装过MySQL(由于安装事后若是不完全卸载的话,会致使后续安装出现一些异常问题,因此为了保险起见仍是先检查一下为好):html

# 没有装过MySQL的主机

[root@ecs-ce5a-0001 ~]# rpm -qa|grep -i mysql

[root@ecs-ce5a-0001 ~]#

# 以前装过MySQL的主机

[root@mserver0002 img]# rpm -qa|grep -i mysql

mysql-community-common-5.7.24-1.el6.x86_64

mysql-community-client-5.7.24-1.el6.x86_64

mysql-community-libs-5.7.24-1.el6.x86_64

mysql-community-server-5.7.24-1.el6.x86_64

[root@mserver0002 img]#

若发现有历史安装痕迹,那么就要进行下一步的清理操做来清除历史垃圾了,挨个将全部的安装包清理完毕(若出现卸载不掉的能够尝试使用rpm -ev):mysql

[root@mserver0002 img]# yum -y remove mysql-community-common-5.7.24-1.el6.x86_64

[root@mserver0002 img]# yum -y remove xxx

下载安装源

MySQL有个安装源仓库站: http://repo.mysql.com/ ;里面有一大排的安装源连接,这时候可不能找错了,对应于咱们这次安装的CentOS7.3版本咱们选用带el7的源: http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm ;这一步切记千万不能大意,下载的版本一旦和系统没法对应,那么接下来的全部操做都是白费工夫,并且还有可能遇到一些意想不到的问题。c++

[root@ecs-ce5a-0001 ~]# cd tmp/

[root@ecs-ce5a-0001 tmp]# ls

[root@ecs-ce5a-0001 tmp]# wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

--2018-11-14 10:29:03-- http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

......

2018-11-14 10:29:04 (253 MB/s) - ‘mysql57-community-release-el7-9.noarch.rpm’ saved [9224/9224]

[root@ecs-ce5a-0001 tmp]#

安装mysql-server

在通过上一步将安装源下载到本地以后,接下来就是安装了;先经过rpm将安装源安装后,就能够正式使用yum进行mysql-server的安装了(听说也能够在安装时指定installroot,没有尝试过,通常都是默认安装的),有须要确认的地方之间y就能够了;直至出现“Complete!”意味着安装顺利完成了。sql

[root@ecs-ce5a-0001 tmp]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm

warning: mysql57-community-release-el7-9.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ################################## [100%]

Updating / installing...

1:mysql57-community-release-el7-9 ################################# [100%]

[root@ecs-ce5a-0001 tmp]#

[root@ecs-ce5a-0001 tmp]# yum -y install mysql-server

Loaded plugins: fastestmirror

Determining fastest mirrors

......

Replaced:

mariadb-libs.x86_64 1:5.5.60-1.el7_5

Complete!

[root@ecs-ce5a-0001 tmp]#

默认配置查看

默认状况下,安装后的配置文件是下面这样子的(咱们能够根据本身的须要将相应的配置补充或者进行修改,好比datadir通常都会设置到专属的数据目录下面去):数据库

[root@ecs-ce5a-0001 tmp]# vim /etc/my.cnf

[mysqld]

# ... some comments

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

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

symbolic-links=0

log-error=/var/log/mysqld.log

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

启动服务

启动MySQL服务,当前版本的MySQL在启动时会默认生成一个root用户并提供默认密码,咱们能够在/var/log/mysqld.log文件中获取到默认密码,至此服务正常启动完成,并获取到了默认的root密码。ubuntu

[root@ecs-ce5a-0001 tmp]# service mysqld restart

Redirecting to /bin/systemctl restart mysqld.service

[root@ecs-ce5a-0001 tmp]#

[root@ecs-ce5a-0001 tmp]# grep password /var/log/mysqld.log

2018-11-14T03:07:28.036081Z 1 [Note] A temporary password is generated for root@localhost: 8-8br-HfR4J9

[root@ecs-ce5a-0001 tmp]#

修改密码和赋权

使用默认密码登陆后,发现啥也作不了,必须修改密码,因此使用了alter来进行密码修改(密码要求比早版本的严格了不少,长度、特殊字符、字母和数字都有要求),关于赋权,后面的补充知识里面会专门稍微详细的说明一下。vim

[root@ecs-ce5a-0001 tmp]# mysql -uroot -p8-8br-HfR4J9

mysql: [Warning] Using a password on the command line interface can be insecure.

......

mysql> use mysql

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

mysql> alter user 'root'@'localhost' identified by 'smart';

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

mysql> alter user 'root'@'localhost' identified by 'Smart@123';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql>

CentOS 6

无果的尝试

理论上来讲,CentOS6和CentOS7安装MySQL的步骤应该是一致的,起码大部分的步骤都应该是一致的,可是事实上却并不如此。

按照传统的安装方式,即便在下载repo时选择了正确的平台版本,最后发现仍是在yum -y install mysql-server这一步遇到了缺GLIBC_2.14的问题(相似下面这种),也曾经尝试过本身编译安装这个库,可是没有成功,既然此路不通,那何不另觅新法呢!windows

Error: Package: mysql-community-libs-5.7.17-1.el7.x86_64 (mysql57-community-dmr)

Requires: libc.so.6(GLIBC_2.14)(64bit)

Error: Package: mysql-community-client-5.7.17-1.el7.x86_64 (mysql57-community-dmr)

Requires: libc.so.6(GLIBC_2.14)(64bit)

Error: Package: mysql-community-client-5.7.17-1.el7.x86_64 (mysql57-community-dmr)

Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)

You could try using --skip-broken to work around the problem

另谋出路

既然在线安装会出问题,那么不妨试试传统的安装方式,把安装包下载到本地再手动安装呢?

因而就找到知足咱们系统要求的版本(下载地址: https://dev.mysql.com/downloads/file/?id=481078 ),下载到本地(文件名:mysql-5.7.24-1.el6.x86_64.rpm-bundle.tar,这里的el6就是适配CentOS6的);压缩包里有以下一堆文件:centos

Administrator@IVF21BBAA9XWLKD MINGW64 /e/暂时存放/mysql-5.7.24-1.el6.x86_64.rpm-bundle

$ ls

mysql-community-client-5.7.24-1.el6.x86_64.rpm

mysql-community-common-5.7.24-1.el6.x86_64.rpm

mysql-community-devel-5.7.24-1.el6.x86_64.rpm

mysql-community-embedded-5.7.24-1.el6.x86_64.rpm

mysql-community-embedded-devel-5.7.24-1.el6.x86_64.rpm

mysql-community-libs-5.7.24-1.el6.x86_64.rpm

mysql-community-libs-compat-5.7.24-1.el6.x86_64.rpm

mysql-community-server-5.7.24-1.el6.x86_64.rpm

mysql-community-test-5.7.24-1.el6.x86_64.rpm

接下来就分别按顺序安装common、libs、client、server四个包(其余工具包能够视状况决定是否安装);这里的四个包也是能够一次性安装的(命令如:rpm -ivh pkg1 pkg2 pkg3 pkg4):安全

[root@mserver0002 img]# rpm -ivh mysql-community-common-5.7.24-1.el6.x86_64.rpm

[root@mserver0002 img]# rpm -ivh mysql-community-libs-5.7.24-1.el6.x86_64.rpm

[root@mserver0002 img]# rpm -ivh mysql-community-client-5.7.24-1.el6.x86_64.rpm

[root@mserver0002 img]# rpm -ivh mysql-community-server-5.7.24-1.el6.x86_64.rpm

安装完成后,后面的操做步骤就和CentOS7没什么差别了,无非是改改配置文件,设置密码和权限之类的操做了。

Ubuntu 16

先说两句

早几年Ubuntu的系统使用的仍是挺多的,可是现在不少应用默认都是使用CentOS了,其实孰优孰劣我还真没详细比较过,不过一个比较明显的感受呢,Ubuntu安装软件比起CentOS好像是比较简便一些,更傻瓜式一点,因此都了解一下也没什么坏处。

实际操做

鉴于下载安装个系统仍是要耗费很多精力,因此此次也就偷个小懒,没有实际去验证这个操做了,可是以前由于已经装过不少次Ubuntu环境的MySQL了,结合网上的一些博客说明,大体也就如下几个步骤:

# 先经过以下3条命令完成安装

sudo apt-get install mysql-server

sudo apt install mysql-client

sudo apt install libmysqlclient-dev

# 而后查看一下mysql的端口监听确认服务是否正常启动

sudo netstat -tap | grep mysql

安装到这里就已经算成功了,后面的步骤又是老调重弹了(配置、密码、权限等等),因此也就很少说了。

Windows 10

安装版

貌似在5.5或以前的版本还挺流行安装的,无非是一步步next,到最后设置个root密码,而后就万事大吉;到如今比较新的发行版好像都流行使用免安装的方式了,并且安装版的操做实际上也是小学生级的,只要稍微熟悉电脑操做的,估计装起来都不会遇到啥问题,因此这里就很少说了。

安装版(MSI)的下载地址: https://dev.mysql.com/downloads/windows/installer/8.0.html 。

免安装版

下载安装源

解压安装

将压缩包解压到某个目录下(这里我是在虚拟机里面安装的,因此直接放在C盘根目录下了);而后以管理员权限运行CMD,进入mysql解压目录的bin。

到这里理论上来讲是要配置一下my.ini文件的(也就是Linux版的my.cnf文件),鉴于此次只是作简单的安装实验,因此就略去这一步操做。

接下来在dos窗口运行mysqld --initialize-insecure(注意:这里有坑,参考文章最后的常见错误提供了解决方法)

而后就能够install和start了,出现下面的成功日志即表示服务已经成功启动了。

Microsoft Windows [版本 10.0.10240]

(c) 2015 Microsoft Corporation. All rights reserved.

C:\Windows\system32>cd ../../

C:\>cd mysql-8.0.13-winx64

C:\mysql-8.0.13-winx64>cd bin

C:\mysql-8.0.13-winx64\bin>mysqld --initialize-insecure

C:\mysql-8.0.13-winx64\bin>mysqld -install

Service successfully installed.

C:\mysql-8.0.13-winx64\bin>net start mysql

MySQL 服务正在启动 ..

MySQL 服务已经启动成功。

C:\mysql-8.0.13-winx64\bin>

安装结果验证

在前面的安装操做中咱们一直没有设置root密码,因此在验证以前咱们要设置一下root密码,按照下面的步骤操做便可;密码设置完成后便可登陆进行常规操做,以下即表示安装成功。

C:\mysql-8.0.13-winx64\bin>mysqladmin -u root password Smart@123

mysqladmin: [Warning] Using a password on the command line interface can be insecure.

Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

C:\mysql-8.0.13-winx64\bin>mysql -uroot -p

Enter password: *********

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

Your MySQL connection id is 10

Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, 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> show databases ;

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

| Database |

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

| information_schema |

| mysql |

| performance_schema |

| sys |

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

4 rows in set (0.01 sec)

mysql>

补充内容

实际上这种免安装模式是将MySQL注册为Windows的一个服务了,经过查看服务列表咱们能发现这个MySQL服务,也能够控制服务的启动方式、运行状态等等。

5e06a219db954c24888f0ef3.html

怎么卸载?

首先要中止当前正在运行的服务,而后删除mysql目录

而后打开注册表编辑器(regedit),找到并清除如下项:

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQLD Service

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQLD Service

最后须要删除已注册到系统中的MySQL服务

C:\Windows\system32>sc delete MySQL

[SC] DeleteService 成功

C:\Windows\system32>

小葵花补充知识点

关于密码规则

MySQL的密码设置有不一样的规则等级,具体说来是跟validate_password_policy这个配置相关的(默认是1,即MEDIUM,因此刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。):

Policy

Tests Performed

0 or LOW

Length

1 or MEDIUM

Length; numeric, lowercase/uppercase, and special characters

2 or STRONG

Length; numeric, lowercase/uppercase, and special characters; dictionary file

忘记密码了怎么办?

有时长时间不用某服务器了,猛地有一天想去看看数据却发现密码忘了,非常尴尬吧?这时候就须要用到了skip-grant-tables 这个配置了,在my.cnf中将这个配置项打开而后restart一下服务,就能够不用校验密码登陆mysql服务器了,登陆进去以后再给本身的root从新设置一下密码update mysql.user set authentication_string=password('Smart@123') where user='root' ;,大功告成!

[root@mserver0002 img]# cat /etc/my.cnf

[mysqld]

####basic settings####

#skip-grant-tables

default-storage-engine=INNODB

......

# 修改完配置文件后可使用空密码登陆(在Enter password:出现后直接敲enter键)

[root@ecs-ce5a-0001 etc]# mysql -uroot -p

Enter password:

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

......

mysql> use mysql

Database changed

mysql> SET PASSWORD = PASSWORD('Smart@123');

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Smart@123';

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> update mysql.user set password=password('Smart@123') where user= 'root';

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

mysql> desc mysql.user

-> ;

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

| Field | Type | Null | Key | Default | Extra |

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

| Host | char(60) | NO | PRI | | |

......

| authentication_string | text | YES | | NULL | |

| password_expired | enum('N','Y') | NO | | N | |

| password_last_changed | timestamp | YES | | NULL | |

| password_lifetime | smallint(5) unsigned | YES | | NULL | |

| account_locked | enum('N','Y') | NO | | N | |

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

45 rows in set (0.00 sec)

mysql> update mysql.user set authentication_string=password('Smart@123') where user= 'root';

Query OK, 1 row affected, 1 warning (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 1

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

mysql> exit

Bye

[root@ecs-ce5a-0001 etc]# mysql -uroot -p

# 在这里输入新设置的密码Smart@123

Enter password:

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

......

mysql>

关于赋权的说明

首先说说改密码,其实有下面两种途径均可以;而赋权则会涉及的比较多,能够参考下面的操做样例(关于用户权限管理,这么小小的一段是说不清楚的,后面会单独开新的章节进行详细说明):

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Smart@123';

flush privileges;

SET PASSWORD = PASSWORD('Smart@123');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

flush privileges;

-- root所有赋权

grant all privileges on *.* to root@"%" identified by "Smart@123";

flush privileges;

-- 普通用户部分赋权

grant select,insert,update,delete on db_test.* to test@"%" identified by "Smart@2018";

flush privileges;

查看MySQL版本

有时候不免会有须要查看MySQL版本的需求(好比作库同步时要查看两个服务的版本是否是一致能不能同步之类的),下面提供了4中经常使用的数据库版本查看的方法:

# 方法1

[root@ecs-ce5a-0001 ~]# mysql -V

mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper

# 方法2

[root@ecs-ce5a-0001 ~]# mysql --help |grep Distrib

mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper

# 方法3

[root@ecs-ce5a-0001 ~]# mysql -uroot -pKoncendy@123

mysql: [Warning] Using a password on the command line interface can be insecure.

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

Your MySQL connection id is 12

Server version: 5.7.24-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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> select version();

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

| version() |

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

| 5.7.24-log |

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

1 row in set (0.00 sec)

# 方法4

mysql> status

--------------

mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper

Connection id:12

Current database:

Current user:root@

SSL:Not in use

Current pager:stdout

Using outfile:''

Using delimiter:;

Server version:5.7.24-log MySQL Community Server (GPL)

Protocol version:10

Connection:Localhost via UNIX socket

Server characterset:utf8

Db characterset:utf8

Client characterset:utf8

Conn. characterset:utf8

UNIX socket:/data/mysql/mysql.sock

Uptime:5 min 21 sec

Threads: 6 Questions: 293 Slow queries: 6 Opens: 195 Flush tables: 1 Open tables: 156 Queries per second avg: 0.912

--------------

mysql>

常见的错误

远程没法访问

一般状况下,有两个可能性比较大的缘由:

bind-address没设置对,端口绑定到127.0.0.1上面去了

云服务器的3306端口没有作安全组规则开放(这个在本地服务器安装不会出现)

目录初始化问题

启动时失败经过journalctl -xe查看发现以下的错入日志,通常出现这个错误表示my.cnf里指定的datadir不是一个空目录(有垃圾文件或者有以前初始化残留的文件);已经初始化,但没有成功,想再次初始化报错;这时须要清理这个目录以后从新尝试启动服务。

...: 2018-11-14T13:43:11.806347+08:00 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

日志权限的问题

启动时失败经过journalctl -xe查看发现以下的错入日志,实际上就是写日志文件没有权限致使的错误。可是我在执行了[root@ecs-ce5a-0001 etc]# chmod -R 766 /var/log/mysql以后发现启动服务后仍是会报下面的错误,很奇怪(由于766已经对应的是-rwxrw-rw-这个权限级别,能够读写了);后来将766调整为777才能够正常启动服务。(没彻底弄明白为何对日志目录要执行权限?)

...: 2018-11-14T13:44:17.230008+08:00 0 [ERROR] Could not open file '/var/log/mysql/error.log' for error logging: Permission denied

MSVCP140.dll缺失

windows下出现的,在dos窗口运行mysqld --initialize-insecure,这时出现以下提示:

---------------------------

mysqld.exe - 系统错误

---------------------------

没法启动此程序,由于计算机中丢失 MSVCP140.dll。尝试从新安装该程序以解决此问题。

---------------------------

肯定

---------------------------

实际上这个问题是由于没有安装VC++2015版运行库致使的(Microsoft Visual C++ 2015 Redistributable),到以下下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=53587 ,按照本机操做系统的位数肯定下载的包,安装后便可解决此问题。

客户端链接MySQL 8报1251

经过SQLyog或者Navicat链接MySQL发现报1251以下错误提示:

ded5c40752351ab851ac5c5b4c51ceb4.png

百度了一下,缘由是mysql8以前的版本中加密规则是mysql_native_password,在mysql8以后加密规则改为了caching_sha2_password;解决的方法有两种,一种是升级客户端驱动,一种是把mysql用户登陆密码加密规则还原成mysql_native_password;由于我们大多数都是本身想办法搞得客户端,因此就选择第二条路了;操做以下:

# Login

mysqladmin -u root -p

......

# Execute SQL

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin123';

FLUSH PRIVILEGES;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值