前言
对于大众和新手程序员来说,linux可能是一个比较陌生的系统,但是作为开发者又得经常和它打交道。作为后者的我,被安装mysql搞得头可大了,第一次安装mysql,装了一天半,但是没记录。然后第二次安装,又安装了两个小时,为了下次不再浪费时间,也为了能帮助到其他同伙,所以特别做了这次记录。
准备工作
linux虚拟机或linux服务器和远程连接工具等就不说了。
我们先下载mysql的安装包,
下载地址:https://downloads.mysql.com/archives/community/
选择数据版本和linux的发行版本、位数等,即便我选择了,还有三个选项(上图),首先排除中间那个,27.9M,不知道是干啥的,但是肯定不是我需要的。第一个和第三个,一个是**.tar.gz**,一个是**.tar**,我也不知道咋区分,但是我都尝试了一下,.tar被解压之后是一堆.rmb文件(不知道有没有记错),也不知道咋处理这些文件。所以选择**.tar.gz**,也就是第一个。
正式开工
1、排除安装干扰
1.1 检查是否已经安装,执行命令
rpm -qa | grep mysql
如果已经存在,则执行删除命令
rpm -e --nodeps 名字
1.2 查找是否有mysql相关的进程,执行命令
ps -ef|grep mysql | grep -v grep
ps -ef|grep mysqld | grep -v grep
如果有,则执行下面的命令将其杀死
kill -9 进程号
1.3 查找mysql相关的文件,执行命令
find / -name mysql
如果有,将其删除或者重命名,自行百度mv命令的用法
2、安装操作
2.1 将压缩包用远程连接工具上传到linux上,我是传到/opt/下的,如果是新手,建议和我一样,免得出问题。使用解压命令解压
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
2.2 解压之后会多出一个文件夹mysql-5.7.17-linux-glibc2.5-x86_64,重命名为 mysql-5.7.17 。
mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql-5.7.17
注意:如果已经存在mysql这个目录,最好将其移动到别的地方或者重命名,和我保持一致,避免一些不必要的问题。
2.3 创建mysql用户组和mysql用户
cat /etc/group | grep mysql
#类似
mysql:x:490:
cat /etc/passwd | grep mysql
#类似
mysql:x:496:490::/home/mysql:/bin/bash
以上为存在的情况,如无,执行添加命令:
groupadd mysql
useradd -r -g mysql mysql
注意:useradd -r参数表示mysql用户是系统用户,不可用于登录系统
2.4 创建data,数据存放目录
cd mysql-5.7.25
mkdir data
修改权限
chown -R mysql.mysql /opt/mysql-5.7.17
2.5 创建配置文件
在/opt/mysql-5.7.17/support-files目录下创建my_default.cnf,创建命令
cd /opt/mysql-5.7.17/support-files
touch my_default.cnf
在文件中复制以下内容(如果你的安装目录和我不一样,那么这些目录要和你自己的目录对应才行):
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
basedir = /opt/mysql-5.7.17
datadir = /opt/mysql-5.7.17/data
port = 3306
socket = /tmp/mysql.sock
character-set-server=utf8
log-error = /opt/mysql-5.7.17/data/mysqld.log
pid-file = /opt/mysql-5.7.17/data/mysqld.pid
linux下shift+insert是粘贴,Ctrl+insert是复制
拷贝,如果提示是否覆盖,y
cp support-files/my_default.cnf /etc/my.cnf
2.6 初始化
cd /opt/mysql-5.7.17
./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql-5.7.17/ --datadir=/opt/mysql-5.7.17/data/
2.6.1 如果报下面的错误:
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
那就先执行下面的命令再执行上面的初始化命令
yum install -y libaio
2.7 初始密码
初始化之后到日志中去查看初始密码,等会登录用。日志在
/opt/mysql-5.7.17/data/mysqld.log
可以用cat 命令查看
cat /opt/mysql-5.7.17/data/mysqld.log
a8?DQir=T+k+就是密码,查看自己的并且记下来
[Note] A temporary password is generated for root@localhost: a8?DQir=T+k+
如果在data下面没有找到mysqld.log日志文件,有可能是2.5步中配置文件的内容有问题,去检查/etc/my.cnf这个文件,看看配置的那些路径是不是正确的,或者你的安装目录和我不一样,但是配置文件却没有改
2.8 启动
把启动脚本放到开机初始化目录
cp support-files/mysql.server /etc/init.d/mysql
启动命令
service mysql start
如果启动报错
Starting MySQL.2021-06-21T04:56:48.691659Z mysqld_safe The file /usr/local/mysql/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information
The server quit without updating PID file (/opt/mysql-5.7.1[FAILED]ysqld.pid).
这是因为:在MySQL 5.7中,安全性提升,要求切换到软件安装目录,来启动数据库,所以得换种方式启动
cd /opt/mysql-5.7.17
./bin/mysqld_safe --defaults-file=/etc/my.cnf &
2.9 登录,刚刚日志中的密码
./bin/mysql -u root -p
每次都要这样来登录,有点麻烦,可以这样做
ln -s /opt/mysql-5.7.17/bin/mysql /usr/bin
以后登录就可以直接用mysql命令登录了
mysql -uroot -p
2.10 修改密码
set password=password('123456');
flush privileges;
2.11 设置远程连接
grant all privileges on *.* to root@'%' identified by 'root';
flush privileges;
重启mysql才能生效。
service mysql stop
service mysql start
service mysql restart
3. 完善
3.1 启动问题
在2.8步启动过程中,如果需要需要./bin/mysqld_safe --defaults-file=/etc/my.cnf &这种方式启动,那么我们可以简单的处理一下,
mkdir -p /usr/local/mysql/bin
ln -s /opt/mysql-5.7.17/bin/mysqld /usr/local/mysql/bin/mysqld
4. 最后
自己也是在网上找的参考资料,然后碰到了各种问题,所以把自己的问题记录了下来。
主要参考
https://blog.csdn.net/lch520baby/article/details/89081306
https://blog.csdn.net/eagle89/article/details/78411184
http://blog.itpub.net/26506993/viewspace-2136837/
https://blog.csdn.net/u010587433/article/details/47291317
https://blog.csdn.net/emily_and_cat/article/details/108712222