ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql

2022-04-19 22:04:46  阅读:138  来源: 互联网

标签:-- mysql mysqld usr MySQL local


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

 

 

目录

 

内容概述

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,mysqld,usr,MySQL,local
来源: https://www.cnblogs.com/feng2039/p/16167568.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有