centos云服务器 mysql8.0安装

MySQL:

免编译二进制包下载地址:

http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.14-el7-x86_64.tar.gz

源码包:

http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.23-el7-x86_64.tar.gz

https://blog.csdn.net/leqiwen/article/details/77262242

https://www.cnblogs.com/wsh1230/p/8119526.html

mysql国内镜像下载网址

http://mirrors.sohu.com/mysql/

http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/

开源镜像站点汇总

http://segmentfault.com/a/1190000000375848

http://mirrors.ustc.edu.cn/

安装MySQL:

(1) 卸载MariaDB

#查找centos系统是否安装mariadb
在这里插入图片描述
#卸载
在这里插入图片描述
MySQL的运行依赖libaio库,libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。检查Centos是否安装了libaio:
在这里插入图片描述
若无相关包,则安装

[root@TeacherTest ~]# yum -y install libaio

(2) 下载MySQL:
在这里插入图片描述
[root@TeacherTest src]# wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.14-el7-x86_64.tar.gz

解压并移动mysql
在这里插入图片描述
查看mysql文件目录
在这里插入图片描述
在这里插入图片描述
(3) 用户、群组设置

#设置mysql运行的组和用户都为mysql,并且所属组为mysql,为系统用户且禁止mysql用户登录系统。
#若安装时系统默认已经建立用户mysql,所属群主为mysql,则无需创建。
在这里插入图片描述
若mysql用户不存在则通过以下命令创建:
centos云服务器 mysql8.0安装_第1张图片
#更改mysql目录所属主和属组。
在这里插入图片描述
在这里插入图片描述
#将mysql可执行目录/usr/local/mysql/bin/添加到环境变量PATH中,并设置永久生效。

#编辑/etc/profile文件,在文档默认添加:
在这里插入图片描述
在这里插入图片描述
#使/etc/profile文件在当前的shell中生效:
在这里插入图片描述
#查看环境变量PATH

在这里插入图片描述
#创建mysql的数据存储位置为/data/mysql,并更改权限
在这里插入图片描述
#在/usr/local/mysql8目录下分别创建log,etc,run目录分别用来存放日志文件,配置文件和套接文件以及pid文件。并在/usr/local/mysql8/log创建错误日志文件mysql_error.log
在这里插入图片描述
#更改权限
在这里插入图片描述
(4)配置文件

在/usr/local/mysql/etc/下创建MySQL配置文件my.cnf
centos云服务器 mysql8.0安装_第2张图片

(5)数据库初始化
在这里插入图片描述
mysql 8.0中,默认的认证方式从原来的mysql_native_password变成了caching_sha2_password,在初始化的过程中会给root生成一个临时密码。而之前的native方式默认的root密码为空。

在日志 mysql_error.log里面
在这里插入图片描述
#设置会话加密方式
在这里插入图片描述
(6) 启动mysql配置

通过mysqld命令查看mysql启动查找配置文件的顺序:
在这里插入图片描述
#如果系统自带了mysql的配置文件/etc/my.cnf,把该文件删除或者移除。否则启动服务默认会找该配置文件。
在这里插入图片描述
#复制启动脚本文件并修改其属性:
在这里插入图片描述
在这里插入图片描述
#必须在mysqld启动脚本中找到如下项修改配置,否则启动会出错。

修改第46,47行:
在这里插入图片描述
修改第63行:
在这里插入图片描述
修改207行:
在这里插入图片描述
#添加mysqld服务
在这里插入图片描述
#设置开机自启动
在这里插入图片描述
#启动mysqld
在这里插入图片描述
#查看是否已启动
在这里插入图片描述
**

至此,mysql安装完成,有bug的话,自己网上查找相应解决办法即可解决。

**
注意:如果一个系统中存在多个mysql实例,则需通过mysql安装程序提供的mysqld_safe程序启动和停止mysql服务。具体用法如下:
#mysqld_safe --datadir=XXX --socket=XXX --port=XXX --user=XXX &
(1) 用户设置
#root用户用刚才生成的临时密码本地登录。登录若出现如下问题:
[root@TeacherTest tmp]# mysql -u root –p
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
表明mysql默认拒绝root登录。
解决方法:

在/usr/local/mysql8/etc/my.cnf配置文件中加入(#表示跳过验证)
在这里插入图片描述
&表示后台运行。
在这里插入图片描述
保存后重启mysqld服务并登录mysql。
在这里插入图片描述
#更改root用户密码
在这里插入图片描述
#刷新权限
在这里插入图片描述
#修改配置文件,将skip-grant-tables命名注释掉:
在这里插入图片描述
保存退出,重新启动mysqld服务。

修改密码安全策略
数据库在首次初始化时,会更root用户临时创建密码,并且默认会创建一个用户测试用的空白数据库test,以及匿名用户,为安全起见,MySQL提供了安全工具mysql_secure_installation用于解决这些问题。

1) [root@localhost mysql]#

mysql_secure_installation Securing the MySQL server deployment.

#设置用户密码强度等级

2 )

Enter password for user root: (输入密码)

VALIDATE PASSWORD PLUGIN can be used to test passwords

and improve security. It checks the strength of password

and allows the users to set only those passwords which are

secure enough. Would you like to setup VALIDATE PASSWORD plugin?

3)

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8

MEDIUM Length >= 8, numeric, mixed case, and special characters

STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

4 )

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Using existing password for root.

Estimated strength of the password: 25

5)

Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

#删除匿名用户

… skipping.

By default, a MySQL installation has an anonymous user,

allowing anyone to log into MySQL without having to have

a user account created for them. This is intended only for

testing, and to make the installation go a bit smoother.

You should remove them before moving into a production

environment.

6 )

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Success.

#禁止root用户远程登录

Normally, root should only be allowed to connect from

‘localhost’. This ensures that someone cannot guess at

the root password from the network.

7)

Disallow root login remotely? (Press y|Y for Yes, any other key for
No) : y

Success.

#删除测试数据库

By default, MySQL comes with a database named ‘test’ that

anyone can access. This is also intended only for testing,

and should be removed before moving into a production

environment.

8 )

Remove test database and access to it? (Press y|Y for Yes, any other
key for No) : y

  • Dropping test database…

Success.

  • Removing privileges on test database…

Success.

#使以上设置生效

Reloading the privilege tables will ensure that all changes

made so far will take effect immediately.

9 )

Reload privilege tables now? (Press y|Y for Yes, any other key for No)
y

Success.
All done!
查看密码策略:

centos云服务器 mysql8.0安装_第3张图片
validate_password_policy:密码安全策略,默认MEDIUM策略

策略 检查规则
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

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

validate_password_length:密码最少长度

validate_password_mixed_case_count:大小写字符长度,至少1个

validate_password_number_count :数字至少1个

validate_password_special_char_count:特殊字符至少1个

MySQL管理
MySQL是基于客户端/服务器模式的数据库系统,MySQL服务器端以守护进程的方式运行,mysqld为服务器主进程。用户可以使用客户端软件或这mysql提供的命令行工具进行管理。
常用mysql命令工具:
(1) mysql:一个命令行客户程序,用于交互式或以脚本形式执行SQL语句。

使用mysql命令连接mysql数据库时需指定用户名和密码,进入交互式界面后,可输入SQL语句对数据库进行操作,SQL语句后要求以“;”,“\g”, ”\G”结尾。退出程序使用exit或者quit。
mysql命令支持的常用选项如下:

–help,-?:显示帮助信息

–bind-address=ip_address :使用特定的网络接口连接mysql服务器

–database=dbname,-D dbname :指定使用的数据库名称

–default-character-set=charset_name:设置默认字符集

–host=host_name,-h host_name:通过host连接到指定服务器

–password,-p:使用密码连接服务器

–port=port_num:使用指定端口号连接服务器

–user=username,-u username:使用指定的账户连接服务器

示例:
#mysql --user=root --password=123456 dbname
或者
#mysql -u username -p 123456

(2) mysqladmin:执行管理操作的工具,可以检查服务器配置、当前运行状态、以及创建、删除数据库等操作。
mysqladmin [option] command [command option] command ……
mysqladmin支持下列命令:
l create dbname :创建名为dbname 的数据库
#创建数据库db_test
在这里插入图片描述
mysqlshow工具用来查看数据库
centos云服务器 mysql8.0安装_第4张图片
l drop dbname:删除名为dbname的数据库以及数据库中所有的数据表
#删除数据库db_test
centos云服务器 mysql8.0安装_第5张图片

  • extended-status:显示服务器状态变量及变量值

  • flush-hosts:刷新所有主机的缓存信息

  • flush-logs:刷新所有日志

  • flush-privileges:重新加载权限数据表

  • flush-tables:刷新所有数据表

  • kill id,id …:杀死服务器线程

  • password new-pass:设置新密码

#修改root密码:

#mysqladmin –u root –p原密码 password ‘new password’

  • ping:检查服务器是否可用

#查看mysql服务器是否可用
在这里插入图片描述

  • reload:重新加载权限数据表

  • refresh:刷新所有的数据表并重启日志文件

  • shutdown:关闭服务器

  • status:显示服务器状态信息

-c number :自动运行次数统计,必须和-i一起使用

-i number:间隔多长时间重复执行

#每个2s查看一次服务器的状态,总共重复5次:
在这里插入图片描述

  • version:显示版本信息

#查询mysql服务器版本信息
centos云服务器 mysql8.0安装_第6张图片
(3)mysqldump工具:数据库逻辑备份工具,可以使用它对一个或多个mysql数据库进行备份或将数据库传输至其它mysql数据库。执行mysqldump时需要账户具有select权限才能备份数据表,show view权限用户备份视图,trigger权限用户备份触发器。

用法:

mysqldump [option] db_name [table_name]

mysqldump [option] --databases db_name …

mysqldump [option] --all-databases

#备份所有数据库
在这里插入图片描述
#备份mysql数据库
在这里插入图片描述
#备份mysql数据库中的user数据表
在这里插入图片描述
在这里插入图片描述
#还原全部数据库(需慎用)
在这里插入图片描述
#还原指定数据库
在这里插入图片描述
#还原数据库中的表
在这里插入图片描述
2、MySQL基本操作的常用命令
centos云服务器 mysql8.0安装_第7张图片
(1)查询数据库
centos云服务器 mysql8.0安装_第8张图片
(2)创建数据库

用法:create database db_name

#创建数据库db_test

centos云服务器 mysql8.0安装_第9张图片
(3) 创建表

用法:create table tbl_name

#在db_test数据库中创建表userlist,字段包括如下:

user_id:int型,自动增加,不可为空,主键;

name:char(20),不可为空;

telephone:int(11);

e_mail:varchar(50)

address:varchar(100)
在这里插入图片描述
centos云服务器 mysql8.0安装_第10张图片
查看用户
select host,user from mysql.user;

(4) 查看当前是哪个用户
centos云服务器 mysql8.0安装_第11张图片
(5) 查看当前所使用的数据库
centos云服务器 mysql8.0安装_第12张图片
(6) 查看当前数据库的版本
centos云服务器 mysql8.0安装_第13张图片
(7) 查看MySQL的当前状态

mysql>show status;
(8) 查看MySQL的参数
mysql>show variables;
(9) 修改MySQL的参数
#修改参数max_connections
centos云服务器 mysql8.0安装_第14张图片
#set global命令可以临时修改某些参数,但重启后会失效
centos云服务器 mysql8.0安装_第15张图片
注意:在MySQL命令行中符号%类似与shell下的*,表示通配。修改配置文件可以使参数永久生效。

(10) 查看当前MySQL服务器的队列

查看服务器队列在日常管理工作中最为频繁,可以通过它查看当前MySQL在干什么,也可以发现是否有锁表。
centos云服务器 mysql8.0安装_第16张图片
(11) 删除数据表
用法:drop table tbl_name
3、管理数据表:增删盖查
(1) insert:向数据表中插入一行新的数据
语法:insert into tbl_name values(value1,value2,………)
或指定插入列:
insert into tbl_name (col_name 1, col_name 2,……) values (value1,value2,…….)

在这里插入图片描述
在这里插入图片描述
(2) update:更新数据表

语法:update tbl_name set col_name1=new_value1 [, col_name1=new_value2]
[where where_condition]
#将刚才插入的数据user_id=0002的行,增加email为[email protected]
在这里插入图片描述
(3) delete
语法:delete from tbl_name where col_name=value
#插入一行
在这里插入图片描述
#删除该行
在这里插入图片描述
(4)数据库查询:

select:查询数据表中的数据记录。

语法:select col_name1, col_name12…… from tbl_name[ where where_condition] [order by {col_name | expr…]

或select * from tbl_name

#查询userlist表记录
在这里插入图片描述
#查询userlist中的所有用户名称
centos云服务器 mysql8.0安装_第17张图片
#统计userlist表中有多少条记录,调用count()函数
centos云服务器 mysql8.0安装_第18张图片
MySQL与安全
数据库安全包括以下:

  • 强密码,禁止给用户分配无关权限,防止SQL注入;

  • 数据文件,日志文件,程序文件存储安全,保证未经授权的人无法读取或者写入数据;

  • 访问控制:定义用户以及相关权限;

  • 限制仅允许有效的主机连接服务器;

  • 数据备份

MySQL数据库基于访问控制列表(ACLs)进行连接、查询以及其它操作。

所有的账户及密码本保持在mysql数据库下的user表中,可以通过mysqladmin或者sql语句添加,删除,修改账户及密码信息。

账户权限信息被保存在mysql数据库中的user、db、host、tables_priv、columns_priv、procs_priv表中。在MySQL启动时服务器将这些数据库表内容读入内存。要修改一个用户的权限,可以直接修改以上的表,或者使用grant和revoke语句。

Grant命令和作用
centos云服务器 mysql8.0安装_第19张图片
1、 创建账户并通过grant命令赋予权限
示例1:创建tomcat账户,账户仅可以通过本机连接MySQL服务,账号密码为Pass1234@,该账户对db_test数据库中的所有数据表拥有所有权限:

#创建用户create user
在这里插入图片描述
#查询tomcat用户的信息,使用select用户来实现
centos云服务器 mysql8.0安装_第20张图片
#授权grant
在这里插入图片描述
#更新权限
在这里插入图片描述
注意:MySQL权限按照user->db->tables_priv->columns_priv检查的顺序,如果user表中对应的权限为“Y”,则不会检查后面的表中的权限。

示例2:创建tom账户,账户仅可以通过192.168.18.1远程连接MySQL服务,账号密码为Pass1234@,该账户对db_test数据库中的所有数据表拥有查询权限:
在这里插入图片描述

示例3:创建admin账户,该账户对所有数据库具有管理权限,密码为Pass1234@,可从本机登录:
在这里插入图片描述
示例4:创建jobs账户,赋予jobs对db_test数据库中所有数据表的所有权限么,账号密码为Pass1234@,该账户可以从任何主机登录。
在这里插入图片描述
查看权限:show grants
centos云服务器 mysql8.0安装_第21张图片
#刷新权限
在这里插入图片描述
2、 使用revoke撤销账户权限

#撤销jobs对数据库db_test创建的权限
在这里插入图片描述
#撤销jobs对数据库db_test的所有权限
centos云服务器 mysql8.0安装_第22张图片
注意:账户所有权限撤销后,用户仍然可以连接该MySQL服务器,需彻底删除账户用

drop user命令。
在这里插入图片描述
远程连接的实例
(1) 创建用户admin,密码为Admin321@,可以远程登录。创建数据库smxy,授权给admin用户在smxy上的所有权限。
centos云服务器 mysql8.0安装_第23张图片
centos云服务器 mysql8.0安装_第24张图片

刷新权限

在这里插入图片描述
centos云服务器 mysql8.0安装_第25张图片
mysql远程连接报1251错误解决方式
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

解决问题方法有两种:

方法1.升级navicat驱动;(我官网下载目前最新的Navicat 12 for MySQL是可以直接连上的)
方法2.把mysql用户登录密码加密规则还原成mysql_native_password.
这里采用方法2解决,具体操作步骤如下:
用如下命令查看用户信息,看plugin

select host,user,plugin,authentication_string from mysql.user;

用如下命令修改密码(native登录名是什么,就修改什么,不一定是root)

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword';

这样回到客户端就可以成功连接了(亲测不用FLUSH PRIVILEGES命令刷新权限也可以)

本文章大部分来源我的老师的课件以及个人的一些总结,仅供学习使用,转载注明出处!

你可能感兴趣的:(运维)