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 组成和常用工具
客户端程序
- mysql: 交互式或非交互式的CLI工具
- mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成
- insert等写操作语句保存文本文件中
- mysqladmin:基于mysql协议管理mysqld
- mysqlimport:数据导入工具
- MyISAM存储引擎的管理工具:
- myisamchk:检查MyISAM库
- 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

浙公网安备 33010602011771号