• 保存到桌面  加入收藏  设为首页
Java

数据库-通过yum在CentOS7 64位下安装MySQL5.7.20的过程记录

时间:2017-10-22 14:56:03   作者:江节胜   来源:胜行天下网   阅读:876   评论:0


        在Linux中安装MySQL的过程,相比较CentOS7和MySql5.7之前的版本还是有点不同的,有些命令也是发生了变化,MySQL安装初始化后的密码也不是空,直接mysql -uroot -p 然后两下回车也是登录不进去的(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)),而是要采用数据库自动生成的临时密码登录。

        下面记录一下过程,设计到报错的部分,描述会比较混乱。当时的内心也是混乱的。

1 下载MySQL源安装包
2 安装MySQL源
        yum localinstall mysql57-community-release-el7-8.noarch.rpm
3 检查MySQL源是否安装成功

        yum repolist enabled | grep "mysql.*-community.*"

通过yum在CentOS7 64位下安装MySQL5.7.20

        如图所示表示mysql源安装成功
4 可改变默认的MySQL安装版本
        vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本,
        其中enabled=1 表示优先安装。
        默认安装5.7。
5 开始安装MySQL
        yum install mysql-community-server
6 启动MySQL服务
        systemctl start mysqld
        查看启动状态 systemctl status mysqld
7 设置开机启动
        shell> systemctl enable mysqld
        shell> systemctl daemon-reload

以上是正常通过yum在CentOS7 64位下安装MySQL5.7的过程


-----------------------------------------------------------------

----------实际安装过程中的出错处理----------

-----------------------------------------------------------------


cat /etc/my.cnf
datadir=/var/lib/mysql
#数据库数据保存目录 把这个当成安装目录(接下来的操作都是针对这个目录/var/lib/mysql)
socket=/var/lib/mysql/mysql.sock
ls -la
查看所有者 su 切换
http://blog.csdn.net/u012465296/article/details/71157286
sudo rm ib_logfile0、ib_logfile1
注:以上4行内容其实无意义的,可以直接看问题8>处理过程

查看日志
sudo cat /var/log/mysqld.log

1> 错误:
If the mysqld execution user is authorized, page cleaner thread priority can be changed. [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
解决:
cd /var/lib/mysql
ls -la
chmod 777 ibdata1

2 错误:
        ./ib_logfile0 can't be opened in read-write mode.
解决
        chown -R mysql:mysql /var/lib/mysql

3> 问题:
        数据库启动提示default-character-set错误
解决:
        在数据库安装之后设置了字符集配置
        vim /etc/my.cnf
        在 [mysqld]节点上手动添加
        default-character-set=utf8
        character-set-server=utf8
        但是default-character-set=utf8 在 CentOS 7 上启动会有错误,加#注释

4> 错误:
        Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
解决:
        mysqld --initialize

5> 错误:
        mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
解决
        rm -rf /var/lib/mysql

6> 错误:
        –initialize specified but the data directory has files in it. Aborting.
解决:
cd /var/lib/
mv mysql mysql.bak
#systemctl restart mysqld

rm mysql.bak/ -rf


----------------------------22:53 2017/10/21---------------------------------


----------------------------12:00 2017/10/22---------------------------------


查看mysql 安装目录
ps -ef | grep -i mysql

0 /usr/sbin/mysqld --daemonize --pid-file=/var/run/m ysqld/mysqld.pid

得出MySQL安装目录 /usr/sbin/

cd /usr/sbin/
mysqld_safe --skip-grant-tables >/dev/null 2>&1 & (新版无此命令)
或者
mysqld_safe --skip-grant-tables & (新版无此命令)
或者
su root
sudo service mysqld restart
mysqld --skip-grant-tables

7> 问题:
        mysqld --skip-grant-tables
        mysqld --skip-grant-tables --user=root 没有反应
报错
        Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
解决
    ./mysqld --initialize

8> 问题:
        --initialize specified but the data directory has files in it. Aborting.
解决
sudo service mysqld stop #否则/var/lib/mysql 文件夹会自动生成!!!
cd /var/lib/
mv mysql mysql.bak
mysql_install_db --datadir=/var/lib/mysql
mysqld --initialize #新推荐的方法 暂时跳过
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
#chown mysql.mysql /var/run/mysqld/ 此条未确定实际作用
依然报错
查看日志
cat /var/log/mysqld.log
改权限
cd /var/lib/mysql
chown mysql.mysql -R *
service mysqld start

MySQL初始化后root的密码并不是空
另外据说MySQL对启动数据库的用户身份也有要求,不建议是root
查看是否生成的临时密码

grep 'temporary password' /var/log/mysqld.log

通过yum在CentOS7 64位下安装MySQL5.7.20

查看最新密码
cat /root/.mysql_secret
临时密码:qbb+#e*ZJoy#
mysql -uroot -p
登录成功

9> 问题:
        查看目前mysql的用户
        select user,host,authentication_string from mysql.user;
        提示需要先修改默认密码
解决:
set password for root@localhost=password('root'); //不是1旁边的引号
flush privileges; //刷新使生效(关键)

10> 问题:
insert into mysql.user(Host,User,authentication_string) values("localhost","admin",password("admin"));
       出现 Field 'ssl_cipher' doesn't have a default value
解决:
CREATE DATABASE `mmall` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
//这里又是1旁边的引号
本地用于赋予所有权限
grant all privileges on mmall.* to admin@localhost identified by 'admin';
flush privileges; //刷新使生效(关键)

11> 问题:
        在window环境下使用Navicat连接数据库失败
解决:
        给账号开通外网访问权限
        grant all privileges on mmall.* to admin@'%' identified by 'admin';
        依然连接不上(要使用admin账号)
 systemctl stop firewalld.service
 再次连接,发现连接成功,说明是防火墙的问题
 重启防火墙
 sudo vi /etc/sysconfig/iptables
 添加3306端口
        -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
        重启防火墙 sudo service iptables restart
        再次连接,连接成功(要使用admin账号)
特别注意:
        1> 阿里云服务器ECS开通时可能默认开通了安全组(阿里云控制台中设置),安全组中需要设置对外网开通指定端口访问.
        2> 新版mysql.user表中的password改成authentication_string
基本命令:
        1> 启动 sudo service mysqld start centOS7: /bin/systemctl start mysqld.service

        2> 关闭 sudo service mysqld stop

   3> 重启 sudo service mysqld restart (使用这个来启动,避免错误)

        4> 登录/远程登录 mysql -uusername -h xxxhost -P 3306 -ppassword

从入坑到见到光明,历时超过10个小时。

E-mail:dev@jiangjiesheng.cn 

江节胜 总结于 2017年10月22日 14时42



有任何疑问或技术合作都可联系我

微信:yanfahezuo 【推荐】

QQ:596957738


相关评论

加我微信 596957738 (QQ同号)加我微信     QQ联系:596957738    地址:江苏省南京市浦口区

苏ICP备2023050353号

   

苏公网安备32011402010305号

江节胜的Gitee,江节胜的Git地址