官网下载mysql安装包 https://dev.mysql.com/downloads/file/?id=481117
选择MySQL5.7的安装包下载完成后上传至Linux服务器
使用命令tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz解压安装包后再使用命令:
cp -Rf /usr/mysql/mysql-5.7.24-linux-glibc2.12-x86_64/* /usr/local/mysql更换mysql的目录
建议在mysql根目录使用命令:mkdir data 用于存放数据库一些初始化信息。
在初始化之前我们还要在Linux系统建立一个mysql账号与用户,可以理解为一个登陆凭证,就好像现在物业公司的门禁系统一样
所以mysql数据库源码安装是必须设置一个管理员账户才可以继续的
useradd -r -g mysql mysql #创建mysql用户
groupadd mysql #创建用户组mysql
可以使用groups mysql 查看是否创建成功
useradd -r -s /sbin/nologin -g mysql -d /usr/local/mysql/ #-r参数表示mysql用户是系统用户,不可用于登录系统,创建用户mysql并将其添加到用户组mysql中
chown -R mysql.mysql /usr/local/mysql/ #改变目录的权限
数据库初始化
进入MySQL解压目录 使用命令
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data进行数据库初始化,
--basedir指向的应该是MySQL的解压目录,
在5.7.6之前初始化的方法是:bin/mysql_install_db
5.7.6之后的版本初始化数据库不再使用mysql_install_db,而是使用: bin/mysqld --initialize
#将mysql/目录下除了data/目录的所有文件,改回root用户所有
chown -R root .
#mysql用户只需作为mysql-5.7.22/data/目录下所有文件的所有者
chown -R mysql data
复制启动文件
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp bin/my_print_defaults /usr/bin/
修改启动脚本
vi /etc/init.d/my.cnf
修改项为图中方框的部分
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
vi /etc/profile
#添加mysql路径,加入下面内容,按ESC-->:wq保存
export PATH=$PATH:/usr/local/mysql-5.7.22/bin
#刷新立即生效
source /etc/profile
7.修改mysql配置项
vi /etc/my.cnf
配置如下:
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
user = mysql
tmpdir = /tmp
symbolic-links=0
[mysqld_safe]
log-error = /usr/local/mysq/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
8.启动mysql
service mysqld start
如启动失败,删除 /usr/local/mysql-5.7.22/data下所有文件,重新执行./bin
/mysqld
--initialize --user=mysql --basedir=
/usr/local/mysql
--datadir=
/usr/local/mysql/data
,再启动
启动成功后登录发现报错了
使用命令:find / -name mysql.sock发现文件是存在的
然后我想把文件复制过去试试看。发现这条路走不通。
最终找到了解决办法。很简单那就是将usr目录下的mysql.sock文件软连接到tmp目录下
ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
现在是可以登录了但发现需要密码,原来5.7后MySQL会生成一个随机密码,
我没有找到存放密码的文件,就只能去强制修改密码了。
在my.cnf中加上skip-grant-tables后 service mysqld restart
修改完成后发现可以不用密码直接登录
登录后执行
update mysql.user set authentication_string=PASSWORD('123456') where User='root';
flush privileges;
执行成功后将my.cnf 文件改回去,重启MySQL,使用新密码登录,MySQL已安装完成。
但是执行sql的时候发现一直报错,
应该是密码过期了,使用命令alter user user() identified by "123456";重新修改下密码
最后需要补充一下,按照上面的方式安装完成之后还不能进行远程的访问,需要修改允许远程连接,步骤如下:
grant all privileges on *.* to root@'%' identified by '123456' with grant option;
配置完成后发现通过电脑本地的navicat连接该数据库连不上,还有是防火墙的问题
使用命令service iptables stop 关掉防火墙navicat连接成功。所以我们还需要对防火墙的配置进行修改
vi /etc/sysconfig/iptables 新增方框中的配置后重启防火墙。
至此MySQL的安装就完成了。