机房新来的机器,我配完了地址做好了分区,装了好几天数据库,记下来以后参考。[为此展开了一场深夜辩论赛]
好吧 说说怎么装吧,先看看机器上有没有mysql,然后发现我这台机器已经有了,于是就用find / -name mysql|xargs rm -rf删了旧版本mysql相关的文件(这个命令能删但是删的不干净,怎么删干净欢迎拍砖)
- whereis mysql
- find / -name mysql|xargs rm -rf
删完了,准备新版本的安装文件放到服务器某个你喜欢的位置,下载地址:
我选择的5.7.23版本的mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz,存在/data/software/past/下,复制,解压,重命名,删除压缩包。
- cp /data/software/past/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz /usr/local/
- cd /usr/local/
- tar -vxf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
- mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql-5.7.23
- rm -f mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
准备数据存放目录(因为之前存在过数据量大空间不够的情况),修改权限
- mkdir -p /data/mysql/data
- cd /data/mysql/
- chown -R mysql:mysql ./
进到安装目录,修改mysql权限、安装,指定基本目录和数据目录
- cd /usr/local/mysql-5.7.23/
- chown -R mysql:mysql ./
- ./bin/mysqld --user=mysql --basedir=/usr/local/mysql-5.7.23/ --datadir=/data/mysql/data/ --initialize
执行完上一步骤会有几个warnning,note,最后一行有root的临时密码,必须记下来,登录要用,不然还得费劲百度。
- root@localhost: vzfH,iy;P8rk
然后修改mysql-5.7.23文件夹下root组权限,复制相关文件
- cd /usr/local/mysql-5.7.23/
- chown -R root .
- cp support-files/mysql.server /etc/init.d/mysqld
- chmod 755 /etc/init.d/mysqld
- cp /usr/local/mysql-5.7.23/bin/my_print_defaults /usr/bin/
修改配置文件/etc/init.d/mysqld,增加3句目录端口信息。
- vi /etc/init.d/mysqld
- basedir=/usr/local/mysql-5.7.23/
- datadir=/data/mysql/data/
- port=3306
至此,基本是可以启动mysql服务了,如果出现了跟我一样的错误PID file [FAILED],就直接删了/etc/my.cnf文件就好,等需要的时候再增加配置,我懒得去改了,反正/etc/my.cnf有固定模板。
- service mysqld start
- 错误信息:Starting MySQL...The server quit without updating PID file [FAILED]b/mysql/110601.pid).
- rm -f /etc/my.cnf
现在再执行service mysqld start的时候基本会看到绿色的OK了,但是想执行mysql -uroot -p的时候能找到mysql还需要在/etc/profile里配置环境变量,可是我发现配了之后当时是可以的,重启电脑或者关了界面再打开的时候又找不到了,于是就需要一次性做个软链永久解决这个问题了,代码过程如下:
- vi /etc/profile
- export PATH=$PATH:/usr/local/mysql-5.7.23/bin
- source /etc/profile
- mysql -uroot -p (这个时候贴的密码就是上面自动生成的vzfH,iy;P8rk这堆乱七八糟的,下一句修改密码,不然你再进来还得用这复杂的密码)
- SET PASSWORD = PASSWORD('123456');
然后重启后又找不到mysql服务了,做软链,之后就可以了
- 报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- ln -s /usr/local/mysql-5.7.23/bin/mysql /usr/bin
现在还有一个问题,机器重启后mysql没有自启动,用chkconfig --list查看已经自启动的是哪些服务,缺少mysql的话就add一个mysqld即可
- chkconfig --list
- chkconfig --add mysqld
现在基本就可以进去数据库了,领导的需求是还需要有个用户,可以客户端登录数据库,可以导入文件到表里
- mysql -uroot -p
- use mysql;
- CREATE USER 'meizi'@'localhost' IDENTIFIED BY '123456';
- CREATE USER 'meizi'@'%' IDENTIFIED BY '123456';
- grant all privileges on *.* to 'meizi'@'%' identified by '123456';
- flush privileges;
以下sql语句查看、修改是否可远程,在mysql库的表里,root用户登录,详情参考我的另一篇博客:https://blog.csdn.net/caihuashen/article/details/79408755
- select user,host from user;
- update user set host = '%' where host = 'localhost';
- update user set host = '%' where user = 'root';
同事上传文件到数据表里是报错,原来是secure_file_priv设置限制读取导出数据文件,show VARIABLES like '%secure%';发现secure_file_priv是NULL,就是禁止读写文件,想办法改成空值或者根目录后restart即可。
- 错误代码: 1290 The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
- mysql-uroot -p
- show VARIABLES like '%secure%';(结果里有 secure_file_priv NULL )
- vi /etc/my.cnf
- [mysqld]片段下增加下面这个配置,我一开始加在了[mysqld_safe]下,无效
- secure_file_priv=''
- service mysqld restart
最后再加一个tip:当你在服务器之间可以客户端登录、在VPN机器上登不上的时候可能是你领导把你VPN的3306端口禁了。。。What a funny day~ 我好天真、好没鞋、好可爱。