【MySql】Ubuntu安装MySql

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                       

posted on 2017-04-14 11:01  Beatfan  阅读(45)  评论(0)    收藏  举报

导航