【MySql】Ubuntu安装MySql

    xiaoxiao2021-04-17  44

    1、创建mysql的用户组/用户, data目录及其用户目录

    在这步之前一定要先确保你所建的用户以及用户组没有存在,要不然在后面的过程中会报错,删除时候要先删除用户在删除用户组名。

    # userdelmysql                                          # 删除用户

    # groupdelmysql                                         # 删除用户组名

    # mkdir/home/mysql                                      # 在home文件夹下创建文件夹mysql

    # mkdir/home/mysql/data                                 # 在mysql文件夹下创建文件夹data 

    # groupaddmysql                                         #创建一个名为mysql的用户组      

    # useradd -g mysql -d /home/mysqlmysql                  # 在用户组下创建用户

    2、解压安装包并将解压包里的内容拷贝到mysql的安装目录/home/mysql

    # tar -xzvfmysql-5.7.13-linux-glibc2.5-x86_64.tar.gz             # 解压文件

    # cdmysql-5.7.13-linux-glibc2.5-x86_64                           # 进入

    # mv */home/mysql                                               # 移动到之前我创建的mysql文件夹下。

     

    3、安装需要的库

    sudo apt-get install libaio-devlibaio1

    若不安装,则可能在下面出现如下错误:

    ./bin/mysqld: error while loadingshared libraries: libaio.so.1: cannot open shared object file: Nosuch file or directory

     

    4、初始化mysql数据库

    # cd/home/mysql                                        # 进入安装目录

    注意: mysql_install_db 已经不再推荐使用了,建议改成mysqld --initialize 完成实例初始化。

    # ./bin/mysqld --user=mysql--basedir=/home/mysql --datadir=/home/mysql/data --initialize

    若出现

    [Warning] TIMESTAMP with implicitDEFAULT value is deprecated. Please use--explicit_defaults_for_timestamp server option (see documentationfor more details).

    [ERROR] --initialize specified but thedata directory has files in it. Aborting.2016-04-08T01:46:53.155879Z 0

    [ERROR] Aborting

     

    出现上面的错误是因为我们没有清空mysql的data目录,执行清空命令如下:

    # cd/home/mysql/data                       # 进入安装目录下的data目录

    # rm -fr*                                  # 清空数据

     

    重新初始化

    # cd/home/mysql     

    # ./bin/mysqld --user=mysql--basedir=/home/mysql --datadir=/home/mysql/data --initialize

    [Warning] TIMESTAMP with implicitDEFAULT value is deprecated. Please use--explicit_defaults_for_timestamp server option (see documentationfor more details). 2016-04-08T01:47:59.945537Z 0

    [Warning] InnoDB: New log filescreated, LSN=45790 2016-04-08T01:48:00.333528Z 0 [Warning] InnoDB:Creating foreign key constraint system tables.2016-04-08T01:48:00.434908Z 0 [Warning] No existing UUID has been found, so we assume that thisis the first time that this server has been started. Generating anew UUID: ece26421-fd2b-11e5-a1e3-00163e001e5c.2016-04-08T01:48:00.440125Z 0

    [Warning] Gtid table is not ready to beused. Table 'mysql.gtid_executed' cannot be opened.2016-04-08T01:48:00.440904Z 1

    [Note] A temporary password isgenerated for root@localhost:**mjT,#x_5sW

    牢记上面的随机密码, 如上**mjT,#x_5sW,下面我们修改密码时需要用到。

     

    5、修改必要文件

    一、修改 support-files/mysql.server

    若不修改,则在启动服务时会出现如下错误:

    # ./support-files/mysql.serverstart

    ./support-files/mysql.server: line 276:cd: /usr/local/mysql: No such file or directory

    Starting MySQL ERROR! Couldn't findMySQL server (/usr/local/mysql/bin/mysqld_safe)

    上面可知mysql的tar.gz安装包的默认安装目录为/usr/local/mysql,这时候我们需要修改/support-files/mysql.server文件的basedir和datadir目录路径为我们环境所在的mysql的basedir和datadir路径

    修改如下:

     

    # vim support-files/mysql.server

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

    ...

    basedir=/home/mysql

    datadir=/home/mysql/data

    ...

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

     

    二、修改 bin/mysqld_safe

    如不修改,启动服务时会出现

    mysqld_safe The file/usr/local/mysql/bin/mysqld does not exist or is not executable.Please cd to the mysql installation directory and restart thisscript from there as follows: ./bin/mysqld_safe&

     

    说明:mysqld_safe启动脚本默认的从/usr/local/mysql目录中读取另外一个启动脚本mysqld,因为我的安装目录为/home/mysql。所以找不到相关文件。可以从两个方面解决。

     

    方法一:在/usr/local/mysql创建链接文件

    mkdir -p/usr/local/mysql/bin 

    ln -s /home/mysql/bin/mysqld/usr/local/mysql/bin/mysqld

     

    方法二:将mysqld_safe中的所有/usr/local/mysql目录改为自己实际的安装目录

    sed -i's#/usr/local/mysql#/home/mysql#g' /home/mysql/bin/mysqld_safe

     

    6、检测下是否能启动mysql服务

    # cd /home/mysql

    # ./support-files/mysql.serverstart

    Starting MySQL..OK!       #注意不成功可能是没有root权限,使用root试一下

     

     

    7、创建软链接

    # ln -s /home/mysql/bin/mysql/usr/bin/mysql

     

    8、创建配置文件

    # cp my-default.cnf /etc/my.cnf

    修改 /etc/my.cnf,如下:

     

    #----------------------------

    # vim /etc/my.cnf

     

    [mysqld]

    basedir = /home/mysql

    datadir = /home/mysql/data

     

    #设置编码为utf8以防乱码

    character_set_server=utf8

    init_connect='SET NAMES utf8'

     

    [client]

    default-character-set=utf8

    #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL  #删掉或者注释掉

    #------------------------------------------

     

    9、配置mysql服务开机自动启动

    # cp/home/mysql/support-files/mysql.server/etc/init.d/mysqld     # 拷贝启动文件到/etc/init.d/下并重命令为mysqld

    # chmod 755/etc/init.d/mysqld                                     # 增加执行权限

    # chkconfig --listmysqld                                          # 检查自启动项列表中没有mysqld这个,

    # chkconfig --addmysqld                                           # 如果没有就添加mysqld:

    # chkconfig mysqldon                                              # 用这个命令设置开机启动:

     

    在ubuntu中,可以使用以下方法:

    1) 将你的启动脚本复制到 /etc/init.d目录下  以下假设你的脚本文件名为 test。

    2) 设置脚本文件的权限

     $ sudo chmod 755/etc/init.d/test

    3) 执行如下命令将脚本放到启动脚本中去:

     $ cd /etc/init.d

     $ sudo update-rc.dtest defaults 95  //95可以不要,数值越大,越在后面启动,需要网络功能的可考虑,启动网络后再启动服务

    update-rc.d mysqlremove  //移除开机启动服务,仅不用mysql卸载时使用。

     

    10、mysql服务的启动/重启/停止

    # service mysqldstart                                              # 启动服务

    # service mysqldrestart                                            # 重启服务

    # service mysqldstop                                               # 停止服务

     

    11、初始化mysql用户root的密码

    # cd /home/mysql

    # ./bin/mysqladmin -u root -p',Xe)foefD7Jl' password '123456'

    mysqladmin:                                        # 输入刚刚之前的初始密码 OY0bqA));2P&

    正确提示为:

    [Warning] Using a password on thecommand line interface can be insecure.

    Warning: Since password will be sent toserver in plain text, use ssl connection to ensure passwordsafety.

     

    如果这一步完成不了的话,也就是修改不了密码的话,你也可以直接下面的方式先登录

    ./bin/mysqladmin -u root -p password123456 然后输入开始的随机密码

    若出现: unknown variable‘sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL

    在/etc/my.cnf 中,把

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 删掉或者注释掉

    重新修改

     

    如果不修改密码,不进每次登陆麻烦而且在执行一些操作会报一下错误

    You must reset your password usingALTER USER statement before executing thisstatement    #意思就是你必须重置你的密码在执行这个execute操作前

    这里教大家用另外一种方式修改密码,这个是在已经登陆进去的情况下依次执行。

    mysql> SET PASSWORD =PASSWORD('123456');            # PASSWORD()里面的123456 是我设置的新密码,你也可以设置成你的密码

    Query OK, 0 rows affected, 1 warning(0.00 sec)

    Rows matched: 2 Changed: 0 Warnings:1

     

    mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRENEVER;

    Query OK, 0 rows affected, 1 warning(0.00 sec)

    Rows matched: 2 Changed: 0 Warnings:1

     

    mysql> flush privileges;

    Query OK, 0 rows affected, 1 warning(0.00 sec)

    Rows matched: 2 Changed: 0 Warnings:1

     

    12、更改一些编码

    mysql> use mysql

    Reading table information forcompletion of table and column names

    You can turn off this feature to get aquicker startup with -A

    Database changed

    mysql> \s -------------- /usr/soft/mysql/bin/mysql  Ver 14.14 Distrib5.7.13, for linux-glibc2.5 (x86_64) using EditLine wrapper   Connectionid:     2 Current database:   mysql Currentuser:      root@localhost SSL:           Not in use Currentpager:     stdout Usingoutfile:     '' Usingdelimiter:   ; Serverversion:    5.7.13 MySQL Community Server (GPL) Protocol version:   10 Connection:    Localhost via UNIX socket Servercharacterset:   utf8 Db    characterset:   latin1                  ---需要修改成你想要的编码 Clientcharacterset:   utf8 Conn. characterset:   utf8 UNIXsocket:       /tmp/mysql.sock Uptime:        27 sec   Threads: 1  Questions: 43  Slowqueries: 0  Opens: 136  Flushtables: 1  Open tables: 129 Queries per second avg: 1.592 --------------   mysql> show variables like 'character%'; +--------------------------+---------------------------------+ |Variable_name           |Value                          | +--------------------------+---------------------------------+ |character_set_client    |utf8                           | | character_set_connection |utf8                           | | character_set_database   |latin1                         | | character_set_filesystem |binary                         | |character_set_results   |utf8                           | |character_set_server    |utf8                           | |character_set_system    |utf8                           | |character_sets_dir      | /usr/soft/mysql/share/charsets/ | +--------------------------+---------------------------------+ 8 rows in set (0.00 sec)   mysql> SET character_set_database =utf8;                    ----设置编码 Query OK, 0 rows affected, 1 warning (0.00 sec)   mysql> show variables like 'character%'; +--------------------------+---------------------------------+ |Variable_name           |Value                          | +--------------------------+---------------------------------+ |character_set_client    |utf8                           | | character_set_connection |utf8                           | | character_set_database   |utf8                           | | character_set_filesystem |binary                         | |character_set_results   |utf8                           | |character_set_server    |utf8                           | |character_set_system    |utf8                           | |character_sets_dir      | /usr/soft/mysql/share/charsets/ | +--------------------------+---------------------------------+ 8 rows in set (0.00 sec)   mysql> \s -------------- /usr/soft/mysql/bin/mysql  Ver 14.14 Distrib5.7.13, for linux-glibc2.5 (x86_64) using EditLine wrapper   Connectionid:     2 Current database:   mysql Currentuser:      root@localhost SSL:           Not in use Currentpager:     stdout Usingoutfile:     '' Usingdelimiter:   ; Serverversion:    5.7.13 MySQL Community Server (GPL) Protocol version:   10 Connection:    Localhost via UNIX socket Servercharacterset:   utf8 Db    characterset:   utf8 Clientcharacterset:   utf8 Conn. characterset:   utf8 UNIXsocket:       /tmp/mysql.sock Uptime:        3 min 28 sec   Threads: 1  Questions: 52  Slowqueries: 0  Opens: 137  Flushtables: 1  Open tables: 130 Queries per second avg: 0.250 --------------   mysql>

    13、mysql远程授权

    [root@testfornss ~]# mysql -u root-p

    Enter password:

    mysql> grant all privileges on *.*to 'root'@'%' identified by'123456';

    Query OK, 0 rows affected, 1 warning(0.00 sec)  

    或者:

    grant all on *.* to 'root'@'%' identified by '123456'; 

     

    如果不设置远程连接,用mysql数据库连接工具可是连接不上

    若是出现错误:

    ERROR 1820 (HY000): You must reset yourpassword using ALTER USER statement before executing thisstatement.

    重设一下密码即可:

    mysql> setpassword=password('123456')

    然后再启用远程授权:

    mysql> grant all privileges on *.*to 'root'@'%' identified by'123456';

     

    14、用数据库连接工具来测试你刚刚的安装是不是成功了,可以使用 DBeaver或者 Navicat  或者  DB ToolManager

    首先要知道,远程连接的Linux系统的ip,确保本机已经能够ping通的情况下再连接。

    转载请注明原文地址: https://ju.6miu.com/read-673249.html

    最新回复(0)