02_CentOS 7 / 8 离线安装MySQL5.7.x指定版本数据库
<pre><code>目标
系统为:CentOS8.0.1905
最终安装MySQL版本:5.7.29</code></pre>
<p>安装方法在CentOS7下安装完全一样。</p>
<h2>一、离线安装指定版本的MySQL</h2>
<h3>0.安装前准备工作</h3>
<p>如修改主机IP和主机名等操作</p>
<pre><code class="language-bash">vim /etc/hosts
vim /etc/hostname</code></pre>
<h3>1.官网下载tar包</h3>
<p>官网地址:<a href="https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz">https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz</a>
<a href="https://downloads.mysql.com/archives/community/">https://downloads.mysql.com/archives/community/</a>
或者使用以下命令下载</p>
<pre><code class="language-bash">wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz</code></pre>
<h3>2.安装必要的包</h3>
<pre><code class="language-bash">yum -y install libncurses* #CentOS8时需安装,7已经安装。</code></pre>
<h3>3.创建组和用户</h3>
<pre><code class="language-bash">groupadd mysql
useradd mysql -g mysql -d /usr/local/mysql -s /sbin/nologin</code></pre>
<h3>4.上传mysql安装包并解压修</h3>
<pre><code class="language-bash">tar zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64/* /usr/local/mysql
rmdir /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64</code></pre>
<h3>5.创建目录</h3>
<pre><code class="language-bash">mkdir -pv /data/mysql/{data,sock,log,pid}
chown -R mysql:mysql /data/mysql</code></pre>
<h3>6.安装</h3>
<h4>6.1修改mysql服务</h4>
<p><strong>CentOS7/8:</strong>
配置mysql的服务,将support-files下的mysql.server 复制到 /etc/rc.d/下并取个名字</p>
<pre><code class="language-bash">cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/mysqld
vim /etc/rc.d/mysqld 修改为:
basedir=/usr/local/mysql
datadir=/data/mysql/data</code></pre>
<p><strong>CentOS6:</strong>
配置mysql的服务,将support-files下的mysql.server 复制到 /etc/init.d/下并取个名字</p>
<pre><code class="language-bash">cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql 修改为:
basedir=/usr/local/mysql
datadir=/data/mysql/data</code></pre>
<h4>6.2.配置mysql的配置文件my.cnf</h4>
<p>在/etc/下新建my.cnf,内容如下:</p>
<pre><code class="language-bash">[client]
port = 3306
default-character-set=utf8
socket = /tmp/mysql.sock
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql/data
socket = /data/mysql/sock/mysql.sock
pid-file = /data/mysql/pid/mysql.pid
log-error = /data/mysql/log/mysql-error.log
character-set-server=utf8
default_storage_engine = InnoDB
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
default-time_zone = '+8:00'
socket = /tmp/mysql.sock</code></pre>
<p>附,gfkd-et:</p>
<pre><code class="language-bash">[client]
port = 3306
default-character-set=utf8mb4
socket = /tmp/mysql.sock
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql/data
socket = /data/mysql/sock/mysql.sock
pid-file = /data/mysql/pid/mysql.pid
log-error = /data/mysql/log/mysql-error.log
character-set-server=utf8mb4
default_storage_engine = InnoDB
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
default-time_zone = '+8:00'
socket = /tmp/mysql.sock
max_allowed_packet=100M
innodb_log_file_size=512M
max_connections=1024
slow-query-log=1
binlog_format=ROW
[mysql]
default-character-set=utf8mb4</code></pre>
<h4>6.3.初始化数据库</h4>
<p>切换到mysql的bin目录执行下面命令初始化数据库</p>
<pre><code class="language-bash">cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data</code></pre>
<p>注意:
执行完毕后会自动生成默认的密码在执行记录中,注意复制出来</p>
<pre><code class="language-bash">cat /data/mysql/log/mysql-error.log </code></pre>
<h4>6.4.通命令启动mysql 服务</h4>
<p><strong>CentOS7/8下命令启动mysql服务</strong></p>
<pre><code class="language-bash">/etc/rc.d/mysqld start</code></pre>
<p><strong>CentOS6下命令启动mysql服务</strong></p>
<pre><code class="language-bash">service mysql start 或
/etc/init.d/mysql start</code></pre>
<h4>6.5.配置mysql的环境变量</h4>
<p>-bash: mysql: command not found.
为了Mysql 命令使用方便,配置一下mysql的环境变量</p>
<pre><code class="language-bash">vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH</code></pre>
<p>使环境变量生效</p>
<pre><code class="language-bash">source /etc/profile</code></pre>
<h4>6.6.登录</h4>
<pre><code class="language-bash">mysql -uroot -p or mysql -p
Enter password: 输入默认的临时密码
登录成功后,修改密码
mysql> set password=password('新密码');</code></pre>
<h4>6.7.设置mysql的远程登录</h4>
<pre><code class="language-bash">mysql> grant all privileges on *.* to root@'%' identified by '你的密码'; 或
mysql> alter user 'root'@'localhost' identified by '新密码';
mysql> flush privileges;
mysql> \q</code></pre>
<h3>7 设置开机自启动</h3>
<h4>7.1.CentOS 7 / 8 随机启动配置</h4>
<p>创建文件/lib/systemd/system/mysqld.service</p>
<pre><code class="language-bash">vim /lib/systemd/system/mysqld.service</code></pre>
<p>内容如下:</p>
<pre><code class="language-bash">[Unit]
Description=MySQL Server
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/mysqld start
ExecStop=/etc/rc.d/mysqld stop
[Install]
WantedBy=multi-user.target</code></pre>
<pre><code class="language-bash">systemctl daemon-reload</code></pre>
<pre><code class="language-bash">systemctl start mysqld
systemctl status mysqld
systemctl stop mysqld</code></pre>
<pre><code class="language-bash">systemctl enable mysqld</code></pre>
<h4>7.2 CentOS 6 随机启动配置</h4>
<p>MySQL服务器应该随机自启动,查看自启服务列表</p>
<pre><code class="language-bash">chkconfig --list</code></pre>
<p>添加mysql服务并设置自启动</p>
<pre><code class="language-bash">chkconfig --add mysql
chkconfig mysql on</code></pre>
<p>再次查看自启服务列表,会看到mysql的2-5都显示开(有些显示的是 on),说明mysql服务会随机器启动而自动启动。</p>
<h3>8 开启mysql端口3306</h3>
<p>如果防火墙是开启状态的话,那我们先需要打开端口,才能远程登录,使用下面命令开放指定端口,然后重启防火墙</p>
<pre><code class="language-bash">firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload</code></pre>
<h3>9.测试mysql安装所有的安装成功?</h3>
<pre><code class="language-bash">[root@localhost ~]# mysql --version
mysql Ver 14.14 Distrib 5.7.29, for linux-glibc2.12 (x86_64) using EditLine wrapper</code></pre>
<h3>9 创建数据库</h3>
<p>建库、建用户、给用户授权</p>
<pre><code class="language-bash">create database dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant usage on dbname.* to 'dbuser'@'%' identified by 'dbuserpwd' with grant option;
grant all privileges on dbname.* to 'dbuser'@'%';
flush privileges;</code></pre>