mysql

2022/4/20 2:12:30

本文主要是介绍mysql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MySQL二进制安装及源码包安装

 

 

目录
  • 内容概述
  • 内容详细
    • 1.MySQL二进制安装
    • 2.MySQL源码包安装
    • 3.MySQL数据库基本管理
      • 设置Mysql密码
      • MySQL连接工具与方式
      • MySQL配置文件
      • 统一字符集编码
      • 修改MySQL root密码
      • mysqladmin命令

 

内容概述

1.MySQL二进制安装
2.MySQL源码包安装
3.MySQL数据库基本管理

内容详细

1.MySQL二进制安装

MySQL二进制安装需要用到二进制包,二进制包其实就是编译好的源码包,这样我们就省去了编译的步骤了。

1.卸载MariaDB
yum -y remove mariadb-libs.x86_64

2.创建用户
useradd -M -s /sbin/nologin -r mysql

3.安装依赖包:
yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf

4.下载MySQL二进制包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

5.解压二进制包并做好软链接
tar -xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz 
mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/
ln -s /usr/local/mysql-5.7.35-linux-glibc2.12-x86_64/ /usr/local/mysql

6.配置MySQL数据存放目录并授权
chown -R mysql.mysql /usr/local/mysql-5.7.35-linux-glibc2.12-x86_64
mkdir /mysql_data
chown -R mysql.mysql /mysql_data/

7.初始化MySQL服务
# 在这里我们了解一下MySQL5.6与MySQL5.7在安装时的一些区别
	1)首先是需要安装boost_1_59_0,这里推荐二进制安装MySQL5.7,因为已经过了cmake阶段,已经安装好了
	2)初始化命令有所不同:
	# 5.6初始化命令
	/service/mysql/scripts/mysql_install_db --user=mysql --basedir= --datadir=
	# 5.7初始化命令
	/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir= --datadir=
	# 这里的--initialize会生成一个临时的随机密码,通常密码的路径会告诉我们,我们需要使用这个密码登录数据库,并且修改密码也需要一定的强度,不然会提示你密码不安全,一般包含大小写字母,数字以及特殊符号
	# 如果不想生成这个密码的话,还可以使用这个参数 --initialize-insecure
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysql_data
参数解释:
--initialize	: 指定初始化(生成一个临时密码)
--user			: 指定用户(一般为mysql用户)
--basedir		: mysql安装目录
--datadir		: 数据保存的目录

8.编写配置文件并启动
# 编写配置文件
注:MySQL的配置文件默认是/etc/my.cnf
cat /etc/my.cnf
# 指定配置的是MySQL服务端
[mysqld]
# 指MySQL的安装目录
basedir=/usr/local/mysql
# MySQL的数据目录
datadir=/mysql_data
# MySQL的默认端口
port=3306
# Mysql的socket文件保存路径
socket=/usr/local/mysql/mysql.sock
# MySQL保存数据的默认字符集
character-set-server=utf8mb4
# Mysql日志保存路径
log-error=/var/log/mysqld.log
# MySQL 进程pid保存路径
pid-file=/tmp/mysqld.pid
			
# 指定的是配置MySQL客户端
[mysql]
# 客户端读取的Socket文件的路径
socket=/usr/local/mysql/mysql.sock

# 指定客户端的socket文件路径
[client]
socket=/usr/local/mysql/mysql.sock

# 启动MySQL服务
将目录中的MySQL启动脚本拷贝到/etc/init.d/mysqld,并添加一些内容
cp support-files/mysql.server /etc/init.d/mysqld
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/mysql_data
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start 

9.配置环境变量
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile

10.配置system管理
vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemctl daemon-reload
systemctl start mysqld

11.修改登录密码
在我们知道一开始生成的密码的情况下,我们登入MySQL
mysql -uroot -p"xxxxx"
在MySQL命令行中执行
alter user   root@localhost   identified  by  'llyy@123!';	# 密码强度要符合要求
FLUSH PRIVILEGES;

2.MySQL源码包安装

㈡ 安装需求

安装需求 具体配置
安装目录(basedir) /mysql_3307
数据目录(datadir) /mysql_3307/data
端口号 3307
socket文件位置 $basedir/mysql.sock
字符集 utf8mb4

####㈢ ==了解配置选项==

  • 常用配置选项

配置选项 描述 默认值 建议值
CMAKE_INSTALL_PREFIX 安装基目录(basedir) /usr/local/mysql 根据需求
MYSQL_DATADIR 数据目录(datadir) $basedir/data 根据需求
SYSCONFDIR 默认配置文件my.cnf路径   /etc
MYSQL_TCP_PORT TCP/IP端口 3306 非默认端口
MYSQL_UNIX_ADDR 套接字socket文件路径 /tmp/mysql.sock $basedir/
DEFAULT_CHARSET 默认字符集 latin1 utf8mb4
DEFAULT_COLLATION 默认校验规则 latin1_swedish_ci utf8mb4_general_ci
WITH_EXTRA_CHARSETS 扩展字符集 all all
ENABLED_LOCAL_INFILE 是否启用本地加载外部数据文件功能 OFF 建议开启
WITH_SSL SSL支持类型 system 建议显式指定
WITH_BOOST Boost库源代码的位置   Boost库是构建MySQL所必需的,建议事先下载
  • 存储引擎相关配置项

说明:

以下选项值均为布尔值,0或1;0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。

其他的存储引擎可以根据实际需求在安装时通过WITH_xxxx_STORAGE_ENGINE=1的方式编译到服务器中。

配置选项 描述
WITH_INNOBASE_STORAGE_ENGINE 将InnoDB存储引擎插件构建为静态模块编译到服务器中;建议编译到服务器中
WITH_PARTITION_STORAGE_ENGINE 是否支持分区
WITH_FEDERATED_STORAGE_ENGINE 本地数据库是否可以访问远程mysql数据
WITH_BLACKHOLE_STORAGE_ENGINE 黑洞存储引擎,接收数据,但不存储,直接丢弃
WITH_MYISAM_STORAGE_ENGINE 将MYISAM存储引擎静态编译到服务器中
MySQL源码包安装自然需要的是源码包,源码包与二级制包的关系是二级制包是源码包cmake并且编译过的,所以可以节省大量的时间。
源码包安装除了在编译阶段需要大量时间外,其他的步骤与二进制安装基本一致

1.卸载MariaDB
yum -y remove mariadb-libs.x86_64

2.创建用户
useradd -M -s /sbin/nologin -r mysql

3.安装依赖包:
yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel

4.安装boots(C++的库)(如果是自带boost版本的不需要安装)
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar -xf boost_1_59_0.tar.gz -C /usr/local/

5.下载源码包并解压
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35.tar.gz
tar -xf mysql-5.7.35.tar.gz 

6.进入安装目录并cmake
注意 安装路径 数据存储路径 套接字文件路径  端口号 不自带boost的还得带上-DWITH_BOOST=/usr/local/boost_1_59_0 路径
cd mysql-5.7.35

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.35 \
-DMYSQL_DATADIR=/usr/local/mysql-5.7.35/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.35/tmp/mysql.sock \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
***自带boost
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql_3307 \
-DMYSQL_DATADIR=/mysql_3307/data \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/mysql_3307/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost
7.编译并安装
make 	# 需要较长时间	或者make -j cpu数  注意:多核编译容易造成内存溢出,4g内存比较稳妥,但有小概率会编译失败(快是真的快)
make install
创建软链接:
ln -s /usr/local/mysql-5.7.35/ /usr/local/mysql

8.创建一些必要的目录
mkdir /usr/local/mysql-5.7.35/{data,tmp}
touch /var/log/mysqld.log
chown -R mysql.mysql /usr/local/mysql-5.7.35
chown -R mysql.mysql /var/log/mysqld.log

9. 初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
# 初始化完成后会生成密码,后边登录数据库需要用到

10.启动数据库
配置system管理

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-5.7.35/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemctl daemon-reload

编辑配置文件
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql-5.7.35
datadir=/usr/local/mysql-5.7.35/data
port=3306
socket=/usr/local/mysql-5.7.35/tmp/mysql.sock
character-set-server=utf8mb4
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql-5.7.35/tmp/mysqld.pid
[mysql]
socket=/usr/local/mysql-5.7.35/tmp/mysql.sock
[client]
socket=/usr/local/mysql-5.7.35/tmp/mysql.sock

systemctl start mysqld	# 启动数据库

11.配置环境变量
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile

12.修改登录密码
在我们知道一开始生成的密码的情况下,我们登入MySQL
mysql -uroot -p"xxxxx"
在MySQL命令行中执行
alter user   root@localhost   identified  by  'llyy@123!';	# 密码强度要符合要求
FLUSH PRIVILEGES;

 

3.MySQL数据库基本管理

设置Mysql密码

初始状态下,管理员root的密码为空或者是随机生成的,而且至允许本机登录,一般情况下,我们安装好MySQL之后的第一件事就是修改默认的密码。

# 如果原密码为空,可以不用-p参数
mysqladmin -uroot password "xxxxx"

# 如果有密码且你还记得的话,那么:
mysqladmin -uroot -p"xxxxx" password "yyyyy"  

MySQL连接工具与方式

1.MySQL自带的连接命令工具
Mysql自带的连接工具叫`mysql`,下面我们来详细介绍一下mysql连接工具
mysql
# 常见的特定于客户机的连接选项:
-u:             指定用户  mysql -uroot
-p:             指定密码  mysql -uroot -p567
-h:             指定主机域  mysql -uroot -p567 -h127.0.0.1
-P:             指定端口    mysql -uroot -p567 -h127.0.0.1 -P3307
-S:             指定socket文件 mysql -uroot -p567 -S socket文件存放路径
-e:             指定SQL语句(库外执行SQL语句) mysql -uroot -p567 -e "show databases;"
--protocol:     指定连接方式 mysql --protocol=TCP  --protocol=socket

连接方式:
1. TCP/IP的连接方式
2. 套接字连接方式,socket连接
3. 默认使用socket方式连接
查看方式:
在mysql命令行中输入:status;
# 需要注意的是:
因为使用TCP/IP连接,需要建立三次握手
不一定-h都是tcp,-hlocalhost是socket连接
mysql -uroot -p -hlocalhost

MySQL配置文件

MySQL配置文件的作用是配置MySQL,使MySQL按照我们指定的方式健康运行

1.在执行mysql命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
skip-grant-tables	# 跳过密码验证
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1

2.针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123

3.只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
port=3306
default-character-set=utf8
user=root
password=4573

# 如果没有[mysql],则用户在执行mysql命令时的配置以client为准

统一字符集编码

统一字符编码十分有必要,不统一字符编码就会出现乱码的问题

首先,我们可以修改系统的字符集编码
LANG=us_EN.UTF-8
LANG=zh_CN.UTF-8
临时修改报错命令为英文:LANG=us_EN.UTF-8
# 永久修改系统字符集:
vim /etc/locale.conf
LANG=us_EN.UTF-8

我们可以在cmake的时候指定字符集
cmake .
-DDEFAULT_CHARSET=UTF8 \
-DDEFAULT_COLLATION=UTF8_GENERAL_CI

当然也可以在配置文件中指定字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
 
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
修改完毕后重启服务
查看修改的结果,在MySQL命令行中执行:
show variables like '%char%';

校验规则:
utf8_general_ci
1. ci:大小写不敏感
2. cs或bin:大小写敏感
# 一个表里不可能出现同名不同大小写的字段

# 查看校验规则:
show collation;

utf8和utf8mb4之间有什么区别?
utf8不支持emoji表情而utf8mb4支持

我们还可以通过SQL语句指定字符集编码
在MySQL命令行中输入:create database db1 charset utf8mb4 collate utf8mb4_general_ci;

修改MySQL root密码

修改root密码是十分有必要的,在生产环境中要求我们隔一段时间就修改密码
1.知晓root密码的情况下修改密码
# mysqladmin -uroot -p"旧密码" password '新密码'
# MySQL命令行中输入:	# 前提是知晓原密码并登入数据库
alter user root@localhost identified by 'xxxxx';
FLUSH PRIVILEGES;

2.不知晓root密码的情况下去修改密码
# 修改配置文件,在[mysqld]下加入一条命令
[mysqld]
skip_grant_tables	# 跳过授权表
systemctl stop mysqld
systemctl start mysqld
在MySQL命令行输入:UPDATE mysql.user set authentication_string = PASSWORD ("xxxxxx") WHERE User = "root" and Host="localhost";
FLUSH PRIVILEGES;
# 密码修改完毕后记得删除配置文件中的跳过授权表的命令
然后停止,重启数据库

3.远程授权
grant all privileges on *.* to root@'%' identified by 'xxxxx';
flush privileges;

mysqladmin命令

1.修改密码,设置密码:passwd
mysqladmin -uroot -p旧密码 password '新密码'

2.关闭MySQL服务:shutdown
mysqladmin -uroot -p密码 -S socket文件路径 shutdown

3.库外建库:create
mysqladmin -uroot -p密码 create egon
mysql -uroot -p123456 -e 'create database egon'

4.库外删除数据库:drop
mysqladmin -uroot -p123456 drop egon
输入y/N

5.查看配置文件所有的默认参数:variables
mysqladmin -uroot -p123456 variables
mysqladmin -uroot -p123456 variables | grep server_id 

6.检测MySQL进程是否存活:ping
mysqladmin -uroot -p123456 ping

7.查看数据库 慢查询,负载信息:status
mysqladmin -uroot -p123456 status
Uptime                   MySQL服务器已经运行的秒数
Threads                  活跃线程(客户)的数量 
Questions                从mysqld启动起来自客户问题的数量   已经发送给服务器的查询的个数
Slow queries             已经超过long_query_time秒的查询数量 
Opens                    mysqld已经打开了多少表 
Flush tables             flush ..., refresh和reload命令数量 
Open tables              现在被打开的表数量
Queries per second avg: 0.046   负载

8.重载授权表,刷新缓存主机:reload,相当于flush privileges
mysqladmin -uroot -p123456 reload

9.刷新binlog日志
mysqladmin -uroot -p123456 flush-log


这篇关于mysql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程