一、tar.gz方式
1,编译安装mysql有两种方式
- yum 安装(简单)
- 自行编译安装(自由)
原来是由通过yum安装过mysql,比较简单。由于博主要在生产环境中搭建mysql,因此采用自行编译安装。
2,mysql下载
博主直接找mysql官网下载,速度也还挺快的,不过版本注意了,还是用的5.7,总之8目前用得还不算多。
mysql-community-server-5.7.24-1.el6.x86_64.rpm
但是用这个安装发现缺少诸如 client等问题。
因此,就用了163的tar.gz包进行安装,下载地址:
http://mirrors.163.com/mysql/Downloads/MySQL-5.7/
得到:mysql-5.7.23.tar.gz
这样的文件就和之前的安装很类似了:
tar -zxvf mysql-5.7.23.tar.gz -C /usr/local
3,安装相应的依赖
yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncursess-devel autoconf automake wget
4,下载boost
mkdir /usr/local/boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
5,添加用户并创建相应目录存放数据
useradd mysql
cd /home/mysql/
mkdir data logs temp
chown -R mysql:mysql data logs temp
4.执行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/usr/local/boost
二、rpm方式
一:官网下载RPM包
登陆官网地址下载https://dev.mysql.com/downloads/mysql/,并上传至服务器,可以通过xftp或者filezilla上传。
二:安装前的准备工作
一般可以将文件上传至/usr/目录下新建一个mysql目录存放tar包,然后通过tar -xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar,解包后,虽然会有十几个安装包,但是我们一般只需要安装client和server就够了,首先需要进行安装前的检查,
上面的报错是因为libs包无法安装是由于mariadb已经存在,我们需要将其卸载才能将libs包安装成功,
卸载的命令是:rpm -e --nodeps mariadb-libs,
然后就可以安装libs包了,
通过一般通过rpm安装的mysql需要依次执行下面的命令,因为各个包之间有依赖关系,所以最好顺序执行:
rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
在安装server包时报了一个错误:
报错的原因是因为我的虚拟机中安装的linux是最小化的安装,有些命令是没有安装的,所以需要通过
yum provides perl查看可以安装的软件包,
然后通过yum install perl安装,之后再继续安装server包,这时候就成功了。
三:初始化数据库
初始化的命令是:mysqld–initialize --user=mysql
执行之后会给mysqlroot用户一个初始化的密码,可以通过vim /var/log/mysqld.log到日志中看初始密码
启动mysql数据库,之后就可以登录了,
mysql -uroot -p,输入密码,
第一次登录需要修改初始密码
alter user ‘root’@‘主机地址’ identified by ‘密码’;
如果想在虚拟机外通过sqlyog之类的工具连接服务器中的mysql,需要修改防火墙设置,放开3306端口。
如果在/etc/sysconfig/目录下找不到iptables文件,说明防火墙没有安装,通过yum provides iptables可以看到可以安装的版本。
yum install iptables和yum install iptables-service;
然后开启防火墙service iptables start
vim /etc/sysconfig/iptables
将3306端口开发,然后重启防火墙生效即可。
登录数据库报ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
原因主要是使用默认密码登录失败,需要登入数据库修改root用户的密码,但是现在的问题就是进不了数据库。
1、首先需要修改配置文件在[mysqld]下面添加skip-grant-tables,这样就可以免密码登录,重启数据库,输入mysql -uroot -p,然后按Enter键直接进入数据库。
2、进入mysql用户,use mysql。然后修改root用户的密码:
update mysql.user set authentication_string=password(‘newpassword’) where user=‘root’ and host=‘127.0.0.1’ or host=‘localhost’;
注意authentication_string=password(‘newpassword’)中的password(’’)不能少,否则会失败。
3、输入flush privileges;刷新赋权。
然后退出数据库,修改配置文件将skip-grant-tables注释掉,重新启动数据库,这时就可以用新密码登录了。
3,安装完之后
可能存在mysql.sock住不到的问题,这时候就要先找到sock文件,然后用这个命令:
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock
参考:https://blog.csdn.net/dongyuxu342719/article/details/72566695