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源码包安装
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++的库)
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
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
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