CentOS安装MySQL

查看是否已经安装mysql和mariaDB(新版mysql会带有mariaDB), 此笔记只针对mysql

  • rpm -qa|grep mysql 查看有没有安装mysql
  • rpm -qa|grep maria 查看有没有安装mariaDB

最好只选择一种,两种混装可能会有问题。

一、安装mariaDB

  1. yum -y install mysql
  2. yum -y install mariadb-server
  3. mysql_secure_installation 设置 root密码等相关
  4. 第二步没安装的的话,会报错的,即ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ 

二、安装mysql

  1. 如果使用mysql, 则需要先把mariaDB删除

    $ yum -qa|grep mariaDB      // 找到所有相关mariaDB的包

    $ yum remove -y mariaDB-*  // 删除以上的包

    $ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm   // 获取源

    $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm              // 添加源

    $ yum install -y mysql 

    $ yum install -y mysql-server     // 安装相关服务, 

    $ systemctl start mysql      // 启动mysql服务

    $ systemctl enable mysql       // 开机自启动

    $ mysql -u root -p         // 初始化账号是root

  之前遇到个坑,老版本默认密码为空,但新版默认密码是root, 所以如果在Enter password中没有输入root或者输错则会报一下错误。

  

  如有 ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ 错误, 则重新启动mysql或者添加执行权限

   $  systemctl restart mysql

   $ systemctl restart mysql.service

   $ chmod 777  /etc/mysql

  登录成功后如下 , 最后可修改默认账号和密码

  

三、修改密码

   此时,服务器本地登录可以不用密码, 但选择数据库时会报错:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。这是由于在mysql数据库中存在匿名账户,所以登录时无论是-u root还是不使用root账号,都以匿名账号身份登录,而密码是随机的。解决步骤,先删除匿名账号,再给root账号设置密码。

    1 ) 关闭登录权限验证

    打开配置文件

1 [root@lunix ~]# vim /etc/my.cnf

    

    在最后一行添加 skip-grant-tables(如原来就有,则将前面的#去掉), 保存并退出,重启mysql服务

1 [root@lunix ~]# systemctl restart mysql.service

再次登录mysql, 无需账号密码。

1 [root@lunix ~]# mysql

登录成功, 可查看本地数据库 show databases;

切换到mysql数据库, use mysql;

删除匿名账号 , (这里是因为已经删除过,所以显示0 rows, 新用户应该是显示 2 rows) , 当然,也可以不删除匿名账号, 但这样别人就可以随便登录本地mysql。

1 mysql> delete from user where user=''; 

 设置新密码 

1 mysql> UPDATE user SET password=password('您的新密码') where user='root'

刷新权限(必须,否则重启服务后之前设置的密码就无效), 最后退出即可

1 mysql> flush privileges; 
2 mysql> quit;

 将之前/etc/my.cnf添加的 skip-grant-tables删除或者注释 (即恢复密码登录验证)

重启mysql服务 

 [root@lunix ~]# systemctl restart mysql.service // 或者 service restart mysql

再次登录mysql, 此时命令行直接输入 mysql是无法登录的,表示密码错误。

1 [root@lunix ~]# mysql
2 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

正确登录, 在提示的 Enter password后输入之前设置的密码即可。

1 [root@lunix ~]# mysql -u root -p

到此,可以正常操作数据库了。

最后,对外开放3306端口, 客户端就可以登录服务器的mysql了

1 // 开放3306端口
2 [root@lunix ~]# /sbin/iptables -I(A) INPUT -p tcp --dport 3306 -j ACCEPT
3 
4 // 重启网络服务
5 [root@lunix ~]# service network restart

客户端Navicat连接, 对应输入ip和密码即可, 连接名自定义

连接成功!

原文地址:https://www.cnblogs.com/hughes5135/p/10261812.html