一直以来在linux中都是用的在线安装,这次使用安装包来安装,此过程中比较繁琐,但是学会后,在只有内网环境(不能上外网)的情况下也能安装mysql了,下面介绍安装步骤:
首先检查自己的Linux环境是否安装了mariadb(centos7一般会默认安装,此时需卸载,否则会与安装的msql发生未知的冲突)
rpm -qa | grep mariadb //检查是否存在
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64 //进行卸载
第一步:准备好mysql for linux环境下的安装包(可去官网下载)
官网地址:MySQL :: Download MySQL Community Server
我在此处用的是我经常用的版本作示例:mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
将安装包push到linux平台中,我是放在usr/local下,然后进行解压并改名,如下:
解压并改名:
tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz //解压
mv mysql-5.7.34-linux-glibc2.12-x86_64 mysql //改名为mysql
第二步:创建所需的几个文件夹及文件
(1)在usr/local/mysql下创建data文件夹,为数据目录,即创建的数据库都在此处
cd usr/local/mysql
mkdir data
(2)创建mysql组和mysql用户(删除原mysql用户:userdel -r mysql)
cat /etc/group | grep mysql //查看是否已设置
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
(3)在var中的log文件夹中创建文件mysqld.log,并对文件进行设置用户组及用户,授权操作
cd /var/log
touch mysqld.log
chown -R mysql:mysql /var/log
chmod 755 mysqld.log
(4)在tmp文件夹中创建mysql.sock文件,并对文件进行设置用户组及用户,授权操作
cd /tmp
touch mysql.sock
chown mysql:mysql mysql.sock
chmod 755 mysql.sock
(5)创建文件/tmp/mysqld/mysqld.pid:
mkdir mysqld
cd mysqld
touch mysqld.pid
cd ..
chown -R mysql:mysql mysqld
cd mysqld
chmod 755 mysqld.pid
第三步:由于之前卸载了mariadb,将my.cnf文件已经删除,因此需重新建立一个并进行配置
vi etc/my.cnf //此时会新建my.cnf文件,将以下配置信息写入并保存即可
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
socket=/tmp/mysql.socksymbolic-links=0
log-error=/var/log/mysqld.log
#pid-file=/tmp/mysqld/mysqld.pid(用这个总是启动报错)pid-file=/var/run/mysqld/mysqld.pid #需要给予777权限
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
[client]
default-character-set=utf8[mysql]
default-character-set=utf8[mysqld]
log-bin=mysql-bin
binlog-format=ROW
server_id=1
max_connections=1000init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
第四步:在mysql文件夹中的bin目录下,初始化msyql数据库,成功后进行初始安全启动mysql
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data
-bash: ./mysqld: 权限不够
解决:chmod +x mysqld (增加权限)(cd mysql chmod 777 * -R)
添加环境目录
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile复制 mysql.server 并输入命令编辑 mysqld 文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld修改以下增加路径
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
./mysqld_safe --user=mysql & //初始无密码,会在var/log的msyqld.log生产初始密码
查看是否启动成功
ps -ef | grep mysql
systemctl status mysqld.serrvice
通过查看log,可以找到安全初始密码
cat /var/log/mysqld.log
第五步:进入mysql服务,提示更改密码
另:首次如何跳过密码
修改MySQL的登录设置:
# vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables
use mysql ;
update user set Password = password ( ‘new-password’ ) where User = ‘root’ ;.set password=password("root");
第六步:一些报错的解决
/mysql -u root -p
报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解决1:vi etc/my.cnf(在客户端增加socket=/tmp/mysql.sock)
[client]
socket=/tmp/mysql.sock
于是./mysql -u root -h127.0.0.1 -p可以正常进入,但是不带ip无法进入错误依旧
/etc/init.d/mysqld start
报错:Starting MySQL. ERROR! The server quit without updating PID file (/tmp/mysqld/mysqld.pid).
解决2:修改vi etc/my.cnf pid文件的路径
修改root账户的权限,才可远程进行链接
mysql>grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql>flush privileges;
解决3:由于重启linux服务器后 重启mysql总是出现mysqld.pid丢失的情况而无法启动
pid-file=/var/run/mysqld/mysqld.pid 由于/var/run中是非块型内存,断电不保存,所以需更改路径
pid-file=/usr/local/mysql/mysqld/mysqld.pid 即可