跳转至

13-mysql服务部署

简单介绍

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,目前隶属于 Oracle 旗下产品。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

安装mysql

首先卸载mariadb

yum -y remove mariadb-libs

安装mysql8.0版本

yum -y localinstall mysql-community-*

启动 MySQL 服务器

使用以下命令启动 MySQL 服务器:

$> sudo service mysqld start
Starting mysqld:[ OK ]

您可以使用以下命令检查 MySQL 服务器的状态:

$> sudo service mysqld status
mysqld (pid 3066) is running.

在服务器初始启动时,假设服务器的数据目录为空,会发生以下情况:

  • 服务器已初始化。
  • SSL 证书和密钥文件在数据目录中生成。
  • validate_password 已安装并启用。
  • 'root'@'localhost创建了 一个超级用户帐户。超级用户的密码已设置并存储在错误日志文件中。要显示它,请使用以下命令:
grep 'temporary password' /var/log/mysqld.log
2022-01-17T03:51:39.055395Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &Tw7quMt6d=y

通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改 root 密码:

mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

配置中文字符集

先查看mysql默认字符集

mysql> status;
--------------
mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:      10
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     8.0.27 MySQL Community Server - GPL
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
UNIX socket:        /var/lib/mysql/mysql.sock
Binary data as:     Hexadecimal
Uptime:         5 min 13 sec

Threads: 2  Questions: 13  Slow queries: 0  Opens: 148  Flush tables: 3  Open tables: 64  Queries per second avg: 0.041
--------------

配置mysql配置文件

[root@linux-node76 ~]# vim /etc/my.cnf
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect  ='set collation_connection = utf8_general_ci'
init_connect  ='set collation_database=utf8_general_ci'
init_connect  ='set names utf8'
init_connect  ='set character_set_connection=utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

重启mysql服务生效

[root@linux-node76 ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service

检查msql默认字符集

mysql> show variables like '%character%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb3                        |
| character_set_connection | utf8mb3                        |
| character_set_database   | utf8mb3                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb3                        |
| character_set_server     | utf8mb3                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

mysql> status;
--------------
mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:      8
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     8.0.27 MySQL Community Server - GPL
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8mb3
Db     characterset:    utf8mb3
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
UNIX socket:        /var/lib/mysql/mysql.sock
Binary data as:     Hexadecimal
Uptime:         18 sec

Threads: 2  Questions: 6  Slow queries: 0  Opens: 134  Flush tables: 3  Open tables: 53  Queries per second avg: 0.333
--------------

配置mysql空密码

升级之后密码需要设置特别复杂,导致自己都记不住,本地开发环境我一般设置成123456,便于记忆

1、查看密码策略

show variables like 'validate_password%';

2、修改密码策略

-- 密码验证策略低要求(0或LOW代表低级)
set global validate_password.policy=0;

-- 密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=0;

-- 密码至少要包含的数字个数。
set global validate_password.number_count=0; 

-- 密码至少要包含的特殊字符数
set global validate_password.special_char_count=0; 

-- 密码长度
set global validate_password.length=6;  

3、修改密码

ALTER user 'root'@'localhost' IDENTIFIED BY '123456'

4.退出验证mysql密码是否为空

mysql

创建数据库

开始创建数据库

CREATE DATABASE `paas_svn` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON paas_svn.* TO 'paas_svn'@'%' IDENTIFIED BY 'paas_svn';
FLUSH PRIVILEGES;
show databases;
mysql -h 192.168.1.104 -u paas_svn -ppaas_svn -e "show databases;"

mysql常用命令

https://www.cnblogs.com/bluealine/p/7832219.html

创建测试数据

切换到数据库
use demo;
创建表
create table tb_tmp01
(
id INT(11),
name VARCHAR(25),
age INT(11)
);
查看创建的表
show tables;
在表中插入数据
insert into tb_tmp01(id,name,age) value ('001','xiaoming','18');
insert into tb_tmp01(id,name,age) value ('002','zhangsan','20');
insert into tb_tmp01(id,name,age) value ('003','lisi','21');
insert into tb_tmp01(id,name,age) value ('004','wanger','19');
insert into tb_tmp01(id,name,age) value ('005','mazi','25');
查看表中的内容
select * from tb_tmp01;
删除表
drop table tb_tmp01;


将下载的备份文件进行解压
tar xf hins21495719_data_20220509093135.tar
gzip -d demo_datafull_202205090931_1652059895.sql.gz

恢复数据库
mysql -h rm-uf6qdz57x4qi22m23so.mysql.rds.aliyuncs.com -u zhangsan -p demo < /root/demo_datafull_202205090931_1652059895.sql

检查数据是否恢复
mysql -h rm-uf6qdz57x4qi22m23so.mysql.rds.aliyuncs.com -u zhangsan -p
use demo;
select * from tb_tmp01;