Linux手动安装MySQL
<p>[TOC]</p>
<h2>自动部署脚本及安装包参考:</h2>
<h4>[点击下载mysql安装包及脚本](<a href="http://101.69.243.254:5010/share/rLscBxX8">http://101.69.243.254:5010/share/rLscBxX8</a> "mysql安装包及脚本")</h4>
<h2>1.安装前先检查是否已经安装mysql</h2>
<pre><code class="language-shell"># 首先卸载相关mysql
rpm -qa | grep mysql
rpm -qa | grep -i mysql | xargs rpm -e --nodeps
将以上查出来的rpm包通过yum remove -y 包名.rpm,没有忽略。
# 删除mariadb数据库
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps
将以上查出来的rpm包通过yum remove -y 包名.rpm,没有忽略。
# 删除mysql相应目录(遇到问题时,可使用此恢复到初始状态)
find / -name mysql
rm -rf /var/lib/mysql
rm -rf /usr/share/mysql
# 删除mysql用户(重新安装不需要执行)
groupdel mysql
userdel -r mysql</code></pre>
<h2>2.手动安装前的准备</h2>
<h3>2.1上传软件包至/home并解压</h3>
<p>以下以 “mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz” 版本为例</p>
<h3>2.2添加MySQL用户</h3>
<pre><code class="language-shell">groupadd mysql # 创建用户组
adduser -g mysql -m -d /home/mysql -s /bin/bash mysql # 创建用户
passwd mysql # 设置用户密码(不允许设置弱密码)</code></pre>
<h3>2.3新建数据库安装文件及数据存放目录</h3>
<ul>
<li>移动解压的mysql相关文件到指定目录</li>
</ul>
<pre><code class="language-shell">mkdir -p /risen/soft/database # 新建安装目录
mv mysql-5.7.34-linux-glibc2.12-x86_64 /risen/soft/database/mysql # 移动解压文件到需求目录并改名
mkdir /risen/soft/database/mysql/data</code></pre>
<ul>
<li>创建数据存放目录</li>
</ul>
<pre><code class="language-shell">mkdir -p /risen/soft/database/mysql/mysql_bin/bin # 数据存放目录(对应my.cnf中的datadir参数与log_bin参数)
touch /risen/soft/database/mysql/mysql_bin/mysql.pid # 新建pid文件(对应my.cnf中的pid-file参数)
mkdir /risen/soft/database/mysql/error_log
touch /risen/soft/database/mysql/error_log/error.log # 新建error日志目录,并创建error.log文件(对应my.cnf中的log-error参数)
mkdir /risen/soft/database/mysql/backup # 备份目录
mkdir /risen/soft/sh # 脚本存放目录
chown -R mysql.mysql /risen/soft/database/mysql # 递归修改mysql安装目录归属</code></pre>
<h3>2.4修改内核参数</h3>
<pre><code class="language-shell">vim /etc/security/limits.conf
mysql hard nofile 65535
mysql soft nofile 65535</code></pre>
<h3>2.5配置my.cnf</h3>
<pre><code class="language-shell">mv /etc/my.cnf /etc/my.cnf.bak # 若有原件就先备份
vim /etc/my.cnf</code></pre>
<ul>
<li>添加如下内容</li>
</ul>
<pre><code class="language-shell">[mysqld]
#数据路径
datadir=/risen/soft/database/mysql/data
#数据库安装路径
basedir=/risen/soft/database/mysql
socket=/var/lib/mysql/mysql.sock
#数据库端口
port=3307
#最大连接数
max_connections=1000
#SQL语句记录
general_log=ON
general_log_file=/risen/soft/database/mysql/data/query.log
#慢sql配置
#long_query_time=1 #定义查过多少秒的查询算是慢查询,默认10s,建议1s
#slow-query-log=on #on打开,off关闭
#slow_query_log_file=&quot;mysql_slow_query.log&quot; #sql日志名称及路径,默认数据目录下。
#log-queries-not-using-indexes # 记录下没有使用索引的query
#log_output='file' #日志保存类型,file:以文件形式保存,table:一表形式保存,建议file
#数据缓存大小
innodb_buffer_pool_size=1024M
#语法校验规则
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#Disablingsymbolic-linksisrecommendedtopreventassortedsecurity
#开启计划事件
event_scheduler=1
#免密登录
#skip-grant-tables
#开启bin-log
log_bin=/risen/soft/database/mysql/mysql_bin/bin/mysql-bin#
#过期清理binlog
expire_logs_days = 10
#binlog大小
max_binlog_size = 100M
server-id=230
#不区分大小写
lower_case_table_names=1
#跳过DNS解析
skip-name-resolve=1
#接受数据包的大小
max_allowed_packet=500M
#字符集设置
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
[mysqld_safe]
open_files_limit = 65535
#记录错误信息日志
log-error=/risen/soft/database/mysql/error_log/error.log
pid-file=/risen/soft/database/mysql/mysql_bin/mysql.pid
[client]
#数据库端口
port=3307
socket=/var/lib/mysql/mysql.sock
#编码设置
default-character-set=utf8
[mysql]
#编码设置
default-character-set=utf8</code></pre>
<h3>2.6设置定期清理查询日志query</h3>
<pre><code class="language-shell">crontab -e
# 每周六凌晨1点清理query日志
00 1 * * 6 echo &quot;&quot; &gt; /risen/soft/database/mysql/data/query.log</code></pre>
<h3>2.7修改全局变量/etc/profile</h3>
<pre><code class="language-shell">vim /etc/profile
PATH=$PATH:$HOME/bin:/risen/soft/database/mysql/bin
source /etc/profile #使环境变量立即生效</code></pre>
<h2>3.开始安装MySQL</h2>
<pre><code class="language-shell">su - mysql # 最好使用mysql用户安装MySQL数据库
cd /risen/soft/database/mysql # 进入mysql解压目录</code></pre>
<ul>
<li>初始化数据库</li>
</ul>
<pre><code class="language-shell">bin/mysqld --initialize --console --user=mysql --basedir=/risen/soft/database/mysql --datadir=/risen/soft/database/mysql/data # 初始化数据库
注:执行之后会输出初始密码,保存初始密码</code></pre>
<ul>
<li>开启加密连接</li>
</ul>
<pre><code class="language-shell">bin/mysql_ssl_rsa_setup
执行bin/mysqld_safe --user=mysql &amp; # 启动mysql
ps -ef | grep mysql # 查看mysql服务是否启动</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/b6ece8fba4165a110b817ea12b856a81" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/83aa01af5744f4c2701919e7c33b73e2" alt="" /></p>
<h2>4.修改登录密码及远程登录用户</h2>
<ul>
<li>登录mysql,执行后输入初始密码即可登录</li>
</ul>
<pre><code class="language-shell">mysql -uroot -p</code></pre>
<ul>
<li>登录成功之后执行下列命令</li>
</ul>
<pre><code class="language-shell">alter user 'root'@'%' identified by &quot;xxxxxxx&quot;; #安装MySQL初次登录第一件事就是修改root登录密码
use mysql; #进入mysql库
select host,user from user; #查看root用户远程登录权限表
grant all privileges on *.* to root@'%' identified by &quot;xxxxxx&quot;; #添加远程登录用户及密码
flush privileges; #添加完成之后刷新表
select host,user from user; #查看root用户远程登录权限表
exit # 退出</code></pre>
<h2>5.将MySQL注册成系统服务并设置开机自启</h2>
<pre><code class="language-shell">cp /risen/soft/database/mysql/support-files/mysql.server /etc/init.d/mysqld # 注册系统服务
chkconfig --add mysqld # 将系统服务mysqld加入开机自启列表(chkconfig --list)
chkconfig mysqld on # 设置开机自启
systemctl status/start/stop mysqld # 查看状态/启动/关闭MySQL服务</code></pre>
<p>注:如第一次无法通过 systemctl stop mysqld 命令停止mysql服务时
直接使用kill命令杀死mysql进程(ps –ef | grep mysql),之后即可正常停止启动。</p>
<h2>6.设置自动备份策略</h2>
<p>脚本:
<a href="http://101.69.243.254:5010/share/vqMGRMM0/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql">http://101.69.243.254:5010/share/vqMGRMM0/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql</a></p>
<pre><code class="language-shell">上传脚本并修改安装目录、备份目录等八项参数
chmod +x mysql.sh # 赋予脚本执行权限
./mysql.sh # 执行备份脚本看看是否执行成功
ls -l /risen/soft/database/mysql/backup # 查看备份目录是否有备份文件产生</code></pre>
<ul>
<li>设置定时备份</li>
</ul>
<pre><code class="language-shell">crontab -e
# 每天凌晨三点执行一次备份
00 3 * * * /bin/bash /risen/soft/sh/mysql.sh</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/b9d175fd5d32a21ebf8ca869652bfdf5" alt="" /></p>