Linux系统安装MySQL

  Linux系统版本:CentOS 7  (MySQL的安装版本是与Linux版本有关的,请大家下载MySQL时注意)

 

1. 安装MySQL步骤

  1.1 检查MySQL是否已经安装  yum list installed | grep mysql

    如果已经有了就卸载掉, yum -y remove +数据库名称

  1.2 MySQL依赖libaio,所以先要安装libaio

    yum search libaio # 检索相关信息

    yum install libaio # 安装依赖包

  1.3 下载MySQL Yum Repository

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

  1.4 添加 MySQL Yum Repository

    添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 yum localinstall mysql-community-release-el7-5.noarch.rpm

    在执行过程中需要确认,输入y,成功显示

    如果提示-bash: wget: 未找到命令,请先执行 yum install wget 安装 wget

  1.5 验证下是否添加成功

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

    如果需要查看MySQL版本,执行  yum repolist all | grep mysql 可以看到 5.5, 5.7 版本是默认禁用的,因为现在最新的稳定版是 5.6

  1.6 通过 Yum 来安装 MySQL

    yum install mysql-community-server

    Yum 会自动处理 MySQL 与其他组件的依赖关系,遇到 y\n 提示,输入 y 继续,执行完成会提示“完毕!”。此时MySQL 安装完成,它包含了 mysql-community-server、mysql-community-client、mysql-community-common、mysql-community-libs 四个包。

  1.7 查看安装结果

    执行:whereis mysql

    可以看到mysql的安装目录是:mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

 

2. 启动和关闭MySQL

  启动 MySQL Server :systemctl start mysqld (第一次启动会要求设置密码)

  查看 MySQL Server 状态:systemctl status mysqld

  关闭 MySQL Server:systemctl stop mysqld

  重启MySQL Server:service mysqld restart

  测试是否安装成功:mysql

 

3. 防火墙设置(如果服务器已经关闭了防火墙,可跳过此步骤)

  远程访问 MySQL, 需开放默认端口号 3306.

  firewall-cmd --permanent --zone=public --add-port=3306/tcp

  firewall-cmd --permanent --zone=public --add-port=3306/udp

  firewall-cmd --reload

 

4. MySQL安全设置

  4.1 服务器启动后,可以执行 mysql_secure_installation;

  4.2 修改默认root账号密码

    mysql -uroot -proot   (-u后面是用户名,默认是root,-p后面是上面配置的密码)

    show databases;   (显示数据库名命令)

    use mysql;    (使用默认的mysql库)

    update user set password="root" where user="root";

 

5. 错误解决方案

  跳过登录过程,还可以直接修改my.cnf文件,在[mysqld]后面加一条, skip-grant-tables

  重启mysql就好了,记得修改配置之后,再把这行代码去掉。

 

  5.1 权限不够,或密码错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    我们要做的是命令行免密登录,修改root默认密码

    (1)先停止MySQL服务器  systemctl stop mysqld

    (2)使用safe模式,进行重启,因为是yum模式安装的,不需要找安装目录,直接运行命令就可以:./mysqld_safe --skip-grant-tables

        注:如果你使用的安装包安装包的,就需要找到配置文件 /etc/my.cnf ,在配置文件里增加一行 skip-grant-tables 保存退出后执行后续操作,等密码修改完了,再把这句 skip-grant-tables 去掉。

    (3)另外起一个服务器连接终端,使用root账户,无密码登录,修改root用户密码

      mysql -u root

      use mysql

      update user set password=PASSWORD("你的密码") where User = 'root';

      flush privileges;  // 更新命令

    (4)启动MySQL使用新密码登录

      mysql -uroot -p  然后输入刚才重置的密码

  5.2 使用MySQL工具时连接报错:Host XXX is not allowed to connect to this MySQL server

    mysql -u root

    use mysql;

    select host from user where user='root';   (查询结果会有:127.0.0.1   localhost 等,需要把这些改成%通配符)

    update user set host = '%' where user ='root';  并删除其他的,只保留1条

    5.3  匿名账户问题: ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    当你用root账号登录时,使用命令时会有上面的提示,并且使用show databases命令,发现没有mysql库了。
    因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来。

   (1)先停止MySQL服务器  systemctl stop mysqld

   (2)使用safe模式,进行重启,因为是yum模式安装的,不需要找安装目录,直接运行命令就可以:./mysqld_safe --skip-grant-tables

   (3)另外起一个服务器连接终端,使用root账户,无密码登录,修改root用户密码

      mysql -u root

      use mysql

      delete from user where USER='';

      flush privileges;  // 更新命令

    (4)启动MySQL使用新密码登录

      mysql -uroot -p  然后输入刚才重置的密码

 

posted @ 2019-08-10 18:58  闲人鹤  阅读(196)  评论(0编辑  收藏  举报