【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