mysql5.7.19在centos虚拟机下手动(离线)安装配置过程与一些问题解决办法

来源:互联网 发布:新西兰华人 知乎 编辑:程序博客网 时间:2024/05/18 03:37
一、centos下手动配置MySQL数据库

1.下载MySQL数据库官网: https://dev.mysql.com/downloads/mysql/  我下载的是mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

2.通过winscp软件进行传输到centos(类似于ftp,连接centos,方法自行百度,Google)下,注意防火墙是否在运行,在运行就关闭

4、卸载系统自带的Mariadb
  rpm -qa|grep mariadb         //查询出已安装的mariadb
  rpm -e --nodeps 文件名      //卸载 , 文件名为使用rpm -qa|grep mariadb 命令查出的所有文件

5、删除etc目录下的my.cnf文件
       rm /etc/my.cnf

6、 执行以下命令来创建mysql用户组
    groupadd mysql

7、执行以下命令来创建一个用户名为mysql的用户并加入mysql用户组
    useradd -g mysql mysql

8、解压安装包并且放到 /usr/local里面,重命名为mysql

    tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
    mv  mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
    
9、在etc下新建配置文件my.cnf,并在该文件内添加以下代码:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    socket=/var/lib/mysql/mysql.sock
    [mysqld]
    skip-name-resolve
    #设置3306端口
    port=3306
    socket=/var/lib/mysql/mysql.sock
    # 设置mysql的安装目录
    basedir=/usr/local/mysql
    # 设置mysql数据库的数据的存放目录
    datadir=/usr/local/mysql/data
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    lower_case_table_names=1
    max_allowed_packet=16M

10、创建步骤9中用到的目录并将其用户设置为mysql

    mkdir /var/lib/mysql
    mkdir /var/lib/mysql/mysql
    chown -R mysql:mysql /var/lib/mysql
    chown -R mysql:mysql /var/lib/mysql/mysql

11、进入/usr/local/mysql目录

    cd /usr/local/mysql
    chown -R mysql:mysql ./                       #修改当前目录拥有者为mysql用户

    ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/   #安装数据库mysql5.7.x mysql_install_db命令在bin文件夹下面
                                                       #不同版本的安装命令在的位置不一样,需要大家注意
    chown -R mysql:mysql data                       #修改当前data目录拥有者为mysql用户

 
到此数据库安装完毕!


二、配置MySQL
1、授予my.cnf的最大权限。

    chown 755 /etc/my.cnf    #配置my.cnf权限为:rwxr-xr-x

设置开机自启动服务控制脚本:
2、复制启动脚本到资源目录在 /usr/local/mysql目录下面复制mysql.server到/etc/rc.d/init.d/mysqld(重命名为mysqld)

    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

3、增加mysqld服务控制脚本执行权限

    chmod +x /etc/rc.d/init.d/mysqld

4、将mysqld服务加入到系统服务

    chkconfig --add mysqld

5、检查mysqld服务是否已经生效

    chkconfig --list mysqld


命令输出类似下面的结果:

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止。
6、启动msql(停止mysqld服务:service mysqld stop)

    service mysqld start

7、将mysql的bin目录加入PATH环境变量,编辑/etc/profile文件,在文件最后添加如下信息

    vi /etc/profile

   在文件最后添加如下信息
   export PATH=$PATH:/usr/local/mysql/bin

8、执行下面的命令使所做的更改生效:

    source /etc/profile

    可以检查有没有配成功

    ecoh $PATH   #包含了/usr/local/mysql/bin说明命令已经生效

9、可以登录了

   mysql -u root -p  #注:如果需要密码那么可以采用忘记密码方式取登录

10、在配置文件my.cnf最后面加入无密码登录的配置

   vi /etc/my.cnf

   加入
   skip-grant-tables

   保存并退出

   :wq!

11、重启mysql

   service mysqld restart

12、输入mysql进入mysql数据库

   mysql -uroot -p  #密码为空,不用输

13、选择mysql数据库进行修改密码

   use mysql

   update user set authentication_string=password('123456') where user='root'; #mysql5.7版本的user表,已经没有password字段,
                                        #如果authentication_string 是password会提示没有"no password field"

   flush privileges;    #刷新权限

   exit;    #退出

14、再回到/etc/my.cnf里面注释skip-grant-tables保存退出

   #skip-grant-tables

   :wq!

15、重启mysqld

   service mysqld restart

16、然后就可以用密码登录了

   mysql -uroot -p
   Enter password:            #输入密码



当然了如果想访问宿机(真机)里面的mysql数据库出现下列问题时可以尝试下列方法,亲自试过可行,
下面是centos里面mysql访问真机win7里面的mysql的例子,在win7下mysql授权已经防火墙需要设置如下操作

can't connect to mysql server on '192.168.175.101' (110)

解决办法
grant all privileges on database_name.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;


当配好虚拟机与主机能相互通信时,并且MySQL也已经装好,但是想通过centos虚拟机访问win7的MySQL数据库却报

can't connect to mysql server on '192.168.175.101' (110)错误

网上查询说是MySQL没有原创授权于是授权,如下

打开cmd,运行 mysql -u root -p 在输入密码

再输入两句授权语句

grant all privileges on database_name.* to 'root'@'192.168.123.10' identified by '123456' with grant option;
flush privileges;

表示给root在192.168.123.10的ip下访问MySQL,database_name指可以访问的数据库,后面的 .* 指数据库里面的所有表,最后刷新一下权限。

但是在连虚拟机连接主机MySQL时报了上面的错,其实就是防火墙的问题,也比较简单,进入到win7的控制面板—》系统安全—》防火墙—》高级设置下面几部完成

新建入站规则与出站规则,过程步骤都一致

端口选择

1)下一步,选择tcp,特定端口,默认MySQL端口为3306

2)下一步,允许连接

3)继续下一步,选择三个复选框

4)点击下一步,填写名称与描述

5)完成

完成了入站与出站后

在虚拟机输入mysql -h 192.168.xxx.xxx -u root -p

再输密码

即可成功!