zoukankan      html  css  js  c++  java
  • 安装mysql5.7

    首先下载mysql
    MySql

    选择Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive下载即可
    我这里下载的是mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 刚才上官网看了下,最新的变成8了,这个安装方式是否与5.7相同我就不清楚了(捂脸)

    1.把下载完的文件上传到linux服务器,开始解压。

    tar -xvzf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
    1


    2.解压改下名字,方便后续操作。我这里命名为mysql。

    mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql
    1

    3.新建用户组合用户。
    有可能出现该用户组和用户已经存在,这里是删除原先用户组/用户还是修改新建用户组/用户名都看你喜欢怎么弄了。

    groupadd mysql
    useradd -r -g mysql mysql
    1
    2


    4.修改mysql根目录用户权限
    进入刚才重命名后的mysql文件夹执行修改权限命令

    cd mysql
    chown -R mysql .
    chgrp -R mysql .
    或者
    cd mysql
    chown -R mysql:mysql ./
    1
    2
    3
    4
    5
    6


    5.初始化 MySQL 配置表
    这里会有一个不同点
    5.6及以下版本使用的是

    ./scripts/mysql_install_db --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
    //user刚才新建的用户名,scripts在mysql目录下
    1
    2
    5.7以上改了,如果还是使用上面那个就会提示让你用--initialize命令

    ./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
    1
    从命令中我们可以知道配置时还需要在mysql目录下存在一个data文件夹,但是5.7没有提供这个文件夹,所以我们需要自己在mysql根目录新建一个data文件夹。
    否则会报如下提示:

    [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
    [ERROR] The data directory needs to be specified.
    1
    2
    data新建完毕后就可以开始初始化了

    ./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
    1
    初始化完毕后在命令行最后会提供生成好的随机密码,先拷贝下来。

    新建完后修改权限

    这时候直接初始化会报如下错误

    error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    是因为没有安装libaio.so.1
    运行安装yum install libaio,中间会让你同意下,输入 y 回车即可

    继续初始化

    可以看到最后一行有提供随机密码,记录下来,我这里是scXcgee)k9jn

    然后修改下权限,把除了data外的所有mysql文件的权限都设置为root

    chown -R root .
    chown -R mysql data
    1
    2


    6.复制配置文件 my-default.cnf
    将该文件复制到/etc下,并改名。

    cp support-files/my-default.cnf /etc/my.cnf
    1
    这里有一点很重要,就是tmp文件。
    首先,如果你的support-files文件夹下存在my-default.cnf文件,那么打开看下socket项所指的tmp文件是否存在,如果不存在,则新建,否则会报错。

    如果不存在,很有意思的是我安装时不存在该文件(捂脸)。

    没办法,既然没有提供,那只能自己建了,然后我发现再etc下已经有一个my.cnf了_(:з」∠*)_。

    这是内容

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd

    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid

    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    很明显,这是默认配置,而我是把mysql装在了home目录中,所以需要修改配置。
    附上我的配置文件my.cnf。
    basedir就是mysql根目录
    datadir就是上面在mysql根目录中新建的data文件夹
    socket我在mysql根目录中新建了一个tmp文件夹,然后这里就指向了她,mysql.sock这个文件在我们启动mysql时会自动创建。所以我们只要新建tmp文件夹就行了。

    修改下权限

    然后最重要的一点来了:如果你的socket指向的地址不在tmp中(linux服务器根目录中的tmp文件夹)(我指向的地址是/home/mysql/tmp,不在tmp中,要加上client)请在my.cnf中加上[client] socket=/home/mysql/tmp/mysql.sock项,否在在登入时会报错误,就是这个错误让我折腾了好久好久(捂脸)。

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
    ‘/tmp/mysql.sock’ (2)

    [mysqld]
    basedir=/home/mysql
    datadir=/home/mysql/data
    socket=/home/mysql/tmp/mysql.sock
    port=3306
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    [client]
    socket=/home/mysql/tmp/mysql.sock

    [mysqld_safe]
    #log-error=/var/log/mariadb/mariadb.log
    #pid-file=/var/run/mariadb/mariadb.pid
    basedir=/home/mysql
    datadir=/home/mysql/data
    socket=/home/mysql/tmp/mysql.sock
    port=3306
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    7.启动和关闭mysql

    #/etc/init.d/mysql start 或者 serivce mysql start 或者 ./bin/mysqld_safe&
    #/etc/init.d/mysql stop 或者 service mysql stop 或者 ./bin/mysqladmin -u root -p shutdown
    1
    2
    我一般使用./bin/mysqld_safe&命令启动mysql服务
    启动后检查下ps -ef|grep mysql检查下是否启动
    现在没有启动

    启动

    输入bg 后台运行,然后再运行ps -ef|grep mysql检查可以看到mysql已经启动了

    7.连接mysql

    ./bin/mysql -uroot -p
    1

    提示输入密码,输入刚才记下随机密码 ,要手动输入,不能黏贴哦
    连接成功。


    8.修改密码
    刚才的密码只是初始自动生成的随机密码,我们在之后如果想要使用mysql的话还需要中心设置下密码,不然连远程访问都干不了,这里修改的是root的密码


    9.开启远程访问

    mysql> use mysql;
    Database changed
    mysql> update user set host='%' where user='root';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    mysql> select host,user from user;
    +-----------+---------------+
    | host | user |
    +-----------+---------------+
    | % | root |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    +-----------+---------------+
    3 rows in set (0.00 sec)

    mysql>

    然后退出mysql连接

    重启生效

    /etc/init.d/mysqld restart

    这个命令不能用的话,使用

    find / -name mysql.server,找到后
    
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
    
    mv /etc/init.d/mysql.server mysqld

    [root@Test init.d]# /etc/init.d/mysqld restart
    Shutting down MySQL..2019-04-17T15:53:42.196643Z mysqld_safe mysqld from pid file /usr/local/mysql/data/Test.pid ended
    [ OK ]
    Starting MySQL. [ OK ]
    [1]+ Done ./mysqld_safe (wd: /usr/local/mysql/bin)
    (wd now: /etc/init.d)


    或者
    进入mysql安装根目录
    ./bin/mysqladmin -u root -p shutdown
    输入密码关闭
    然后再启动
    ./bin/mysqld_safe&

    ,实在关不掉就用kill命令吧,把mysql保护线程和mysql线程杀掉就OK了,然后再启动
    ∠( ᐛ 」∠)_。

    尝试远程连接,OK,大功告成。

    碰到的问题

    错误1:

    [root@dbserver ~]# su - mysql
    Last login: Thu Aug 31 17:20:03 CST 2017 on pts/1
    su: warning: cannot change directory to /home/mysql: No such file or directory
    -bash-4.2$ exit
    登出

    解决方法

    [root@dbserver ~]# cd home
    -bash: cd: home: No such file or directory
    [root@dbserver ~]# cd /home
    [root@dbserver home]# ls
    oracle  xiniu
    [root@dbserver home]# mkdir /home/mysql
    [root@dbserver home]# chmod 755 /home/mysql
    [root@dbserver home]# ls
    mysql  oracle  xiniu
    [root@dbserver home]#  cp -a /etc/skel/. /home/mysql/
    [root@dbserver home]# su - mysql
    Last login: Thu Aug 31 17:20:58 CST 2017 on pts/1
    [mysql@dbserver ~]$ id
    uid=987(mysql) gid=1003(mysql) 组=1003(mysql) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [mysql@dbserver ~]$ su - root
    密码:
    su: 鉴定故障
    [mysql@dbserver ~]$ su - root
    密码:
    上一次登录:四 8月 31 17:20:52 CST 2017从 196.160.1.31pts/1 上
    最后一次失败的登录:四 8月 31 17:26:05 CST 2017pts/1 上
    最有一次成功登录后有 1 次失败的登录尝试。
    [root@dbserver ~]# chown mysql:oinstall /home/mysql/ -R
    [root@dbserver ~]# 

     错误2:

    Can't find error-message file '/home/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.

    解决办法:

    将安装包里面的/usr/local/mysql/mysql-5.7.25-linux-glibc2.12-x86_64/share/english/errmsg.sys复制到/home/mysql/share/errmsg.sys

  • 相关阅读:
    微信小游戏5.2.2 在子项目中使用EUI制作排行榜报错 wx.getFileSystemManager not function
    Egret5.2.2 微信小游戏行的示例排行榜
    Python翻译
    Python-docx库的使用
    用百度文字识别实现图片文本识别
    基于airtest的朋友圈自动点赞
    使用豆瓣源安装python包
    Appium 环境配置遇到的坑
    使用Pyppeteer进行gmail模拟登录
    异步爬虫
  • 原文地址:https://www.cnblogs.com/sjxbg/p/10726319.html
Copyright © 2011-2022 走看看