05-mysql入门基础01-安装部署

CentOS 7 利用yum源安装MySQL5.7

tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-
x86_64/
gpgcheck=0
EOF

yum -y install mysql-community-server
systemctl enable --now mysqld
ss -ntl
grep password /var/log/mysqld.log

CentOS 7 利用yum源安装Mariadb

#创建yum仓库配置文件
cat >/etc/yum.repos.d/mariadb.repo<<EOF
# MariaDB 10.5 CentOS repository list - created 2021-01-27 07:45 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://mirrors.nju.edu.cn/mariadb/yum/10.5/centos7-amd64
gpgkey=https://mirrors.nju.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

yum install MariaDB-server -y 
systemctl enable --now mariadb.service

初始化脚本提高安全性

  • 运行脚本:mysql_secure_installation
设置数据库管理员root口令
禁止root远程登录
删除anonymous用户帐号
删除test数据库

MySQL 组成和常用工具

客户端程序

  1. mysql: 交互式或非交互式的CLI工具
  2. mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成
  3. insert等写操作语句保存文本文件中
  4. mysqladmin:基于mysql协议管理mysqld
  5. mysqlimport:数据导入工具
  6. MyISAM存储引擎的管理工具:
  7. myisamchk:检查MyISAM库
  8. myisampack:打包MyISAM表,只读

服务器端程序

mysqld_safe
mysqld
mysqld_multi 多实例 ,示例:mysqld_multi --example

mysql 使用模式

交互模式

脚本模式:

mysql -uUSERNAME -pPASSWORD < /path/somefile.sql
cat /path/somefile.sql | mysql -uUSERNAME -pPASSWORD
mysql>source   /path/from/somefile.sq

mysql命令使用格式

  • mysql [OPTIONS] [database]
mysql客户端常用选项:
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --passowrd= 用户密码,建议使用-p,默认为空密码
-P, --port= 服务器端口
-S, --socket= 指定连接socket文件路径
-D, --database= 指定默认数据库
-C, --compress 启用压缩
-e   "SQL" 执行SQL命令
-V, --version 显示版本
-v  --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置
  • 范例:mysql的配置文件,修改提示符
#查看mysql版本
mysql -V

#临时修改mysql提示符
mysql -uroot -pcentos --prompt="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_" 
#临时修改mysql提示符
export MYSQL_PS1="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"  
#持久修改mysql提示符
vim /etc/my.cnf.d/mysql-clients.cnf 
[mysql]
prompt="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"                                         
          
mysql --print-defaults -v

mysqladmin命令

  • mysqladmin [OPTIONS] command command....
  • 常用命令
#查看mysql服务是否正常,如果正常提示mysqld is alive
mysqladmin -uroot -pcentos   ping
#关闭mysql服务,但mysqladmin命令无法开启
mysqladmin -uroot -pcentos shutdown
#创建数据库testdb
mysqladmin -uroot -pcentos   create testdb 
#删除数据库testdb
mysqladmin -uroot -pcentos   drop testdb
#修改root密码
mysqladmin -uroot -pcentos password 'magedu'
#日志滚动,生成新文件/var/lib/mysql/mariadb-bin.00000N
mysqladmin -uroot -pcentos flush-logs

mycli

  • MyCLI 是 MySQL,MariaDB 和 Percona 的命令行界面,具有自动完成和语法突出显示功能
#CentOS8安装
yum install python3-pip -y
pip3 install mycli

#ubuntu安装
apt -y install mycli
mycli -u root -S /var/run/mysqld/mysqld.sock

实战案例:通用二进制格式安装 MySQL 5.6

  • 准备用户
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
  • 数据目录,建议使用逻辑卷
#可选做,后面的脚本mysql_install_db可自动生成此目录
mkdir /data/mysql
chown mysql:mysql /data/mysql
  • 准备二进制程序
tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-VERSION mysql
chown -R root:root /usr/local/mysql/
  • 准备配置文件
cd /usr/local/mysql
cp -b support-files/my-default.cnf   /etc/my.cnf
vim /etc/my.cnf
#mysql语句块中添加以下三个选项
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on #在mariadb5.5以上版的是默认值,可不加
skip_name_resolve = on    #禁止主机名解析,建议使用
  • 创建数据库文件
cd /usr/local/mysql && ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
ls -l /data/mysql/
  • 准备服务脚本,并启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
#如果有对应的service 文件可以执行下面
cp /usr/local/mysql/support-files/systemd/mariadb.service 
/usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now mariadb
  • PATH路径
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
  • 安全初始化
cd /usr/local/mysql && ./bin/mysql_secure_installation

实战案例:通用二进制安装安装MySQL 5.7 和 MySQL8.0

安装mysql5.7/8.0

#1.0 安装依赖
dnf install libaio numactl-libs -y
#2.0 创建用户并下载软件包
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /home/nameke/tools/ && wget -c http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
#cd /home/nameke/tools/ && wget -c http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
tar -xJf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz -C /data/ cd /data/ && ln -s mysql-8.0.29-linux-glibc2.12-x86_64/ mysql3306 #3.0 创建配置目录 mkdir -p /data/mysql3306/{logs,etc,mysql} echo 'export PATH=/data/mysql3306/bin/:$PATH' >>/etc/profile #4.0 配置my.cnf配置文件 cat >/data/mysql3306/etc/my.cnf<<EOF [mysqld] port = 3306 datadir=/data/mysql3306/mysql skip_name_resolve=1 socket=/data/mysql3306/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-bin = /data/mysql3306/mysql-bin default_storage_engine=InnoDB #skip-grant-tables #skip-networking [mysqld_safe] log-error=/data/mysql3306/logs/mysql.log pid-file=/data/mysql3306/mysql.pid [mysql] prompt="\\R:\\m:\\s(\\u@\\h) [\\d]>\\_" [client] socket=/data/mysql3306/mysql.sock EOF
chown -R mysql:mysql /data/mysql3306/ #
5.0 初始化 #方式1: 生成随机密码 /data/mysql3306/bin/mysqld --initialize --user=mysql --datadir=/data/mysql3306/mysql grep password /data/mysql3306/logs/mysql.log awk '/temporary password/{print $NF}' /data/mysql3306/logs/mysql.log #方式2: 生成 root 空密码 /data/mysql3306/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql3306/mysql #修改前面生成的随机密码为指定密码 mysqladmin -uroot -p'LufavlMka6,!' password nameke #修改前面生成的空密码为指定密码 mysqladmin -uroot password nameke #6.0 配置service服务启动 cat >/usr/lib/systemd/system/mysql3306.service<<EOF [Unit] Description = MySQL Server Documentation = man:mysqld(8) Documentation = http://dev.mysql.com/doc/refman/en/using-systemd.html After = network.target After = syslog.target [Service] User = mysql Group = mysql PIDFile=/data/mysql3306/mysql.pid ExecStopPost=/bin/rm -f /data/mysql3306/mysql.pid ExecStart = /data/mysql3306/bin/mysqld --defaults-file=/data/mysql3306/etc/my.cnf LimitNOFILE = 5000 #Restart=on-failure #RestartPreventExitStatus=1 #PrivateTmp=false [Install] WantedBy = multi-user.target EOF #7.0 启动并登录测试 systemctl daemon-reload && systemctl enable --now mysql3306.service ss -ant && ps aux|grep mysqld /data/mysql3306/bin/mysql -u root -S /data/mysql3306/mysql.socket -P 3306 -p #8.0 创建账户、设置 密码 #mysql5.7/5.8 #MySql 5.7以后的user表中password字段已更新为authentication_string
use mysql; update user set authentication_string
=PASSWORD('zhong2021GUO') where user='root'; #mysql 8.0
alter user root@'localhost' identified with mysql_native_password by 'zhongguo'; create user 'root'@'192.168.56.%' identified by 'zhongguo'; grant all privileges on *.* to root@'192.168.56.%'; flush privileges;

源码编译安装 MySQL

  • 建议:内存4G以上,CPU 核数越多越好
  • 说明:本操作过程适用于以下版本
mysql-5.6.51.tar.gz
mariadb-10.2.18.tar.gz
  • 安装相关依赖包
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel 
libarchive-devel boost-devel   ncurses-devel gnutls-devel libxml2-devel 
openssl-devel libevent-devel libaio-devel perl-Data-Dumper
  • 准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
  • 准备数据库目录
mkdir   /data/mysql
chown mysql.mysql /data/mysql
  • 编译安装说明
利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,
即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的
影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
#编译选项
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
  • 下载并解压缩源码包
tar xvf   mysql-5.6.51.tar.gz  -C /usr/local/src
#mariadb-10.2.18.tar.gz
  • 源码编译安装 MySQL
cd mysql-5.6.51/
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
#4核编译,加快速度
#make -j 4
  • 提示:如果出错,执行rm -f CMakeCache.txt
  • 准备环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
  • 生成数据库文件
cd /apps/mysql/
./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
  • 准备配置文件
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf
#针对旧版本或mariadb-10.2.18.tar.gz 
cp /apps/mysql/support-files/my-huge.cnf   /etc/my.cnf
  • 准备启动脚本,并启动服务
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
  • 安全初始化
mysql_secure_installation

 

posted @ 2022-06-11 22:26  西瓜的春天  阅读(26)  评论(0)    收藏  举报