知识库

标准化实施手册及常见错误


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> &quot;mysql安装包及脚本&quot;)</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=&amp;quot;mysql_slow_query.log&amp;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 &amp;quot;&amp;quot; &amp;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;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 &amp;quot;xxxxxxx&amp;quot;; #安装MySQL初次登录第一件事就是修改root登录密码 use mysql; #进入mysql库 select host,user from user; #查看root用户远程登录权限表 grant all privileges on *.* to root@'%' identified by &amp;quot;xxxxxx&amp;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>

页面列表

ITEM_HTML