Linux/CentOS安装mysql、自定义数据目录、配置用户客户端登录

机房新来的机器,我配完了地址做好了分区,装了好几天数据库,记下来以后参考。[为此展开了一场深夜辩论赛]

好吧 说说怎么装吧,先看看机器上有没有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~ 我好天真、好没鞋、好可爱。

参考 感谢 这篇:https://www.cnblogs.com/kanyun/p/8075414.html

猜你喜欢

转载自blog.csdn.net/caihuashen/article/details/83105959
今日推荐