数据库MySQL
数据库是最头疼的东西,折腾3次其中两次都是为了折腾它,主要是要注意两点
- 采用正确的初始化命令
- 配置正确的访问防火墙和授权策略
MySQL安装
下载
我是用的是5.7.13版本的MySQL,有两种安装方式,第一是用wget从网上下载
1 |
|
但是这个国外的地址实在是下载着太慢了,所以我就用迅雷下好然后移动到了Linux里
解压缩
解压缩到 /usr/local 下,注意不同的命令可能造成目录结果层级不同,总之保证 /usr/local/mysql-5.7.13/bin 这种结构即可
1 | //1. 切换目录 |
建立软连接
为了访问方便,不用每次都带版本号,建立一个mysql的快捷方式
1 | [root@localhost local]# ln -s mysql-5.7.13 mysql |
MySQL初始化
这个概念十分重要,由于在Mac版本时采用的是dmg的安装版,会因为没有初始化报一些错,最后虽然解决了,但是没明白引起错误的原因
添加mysql用户组
为系统添加一个mysql用户分组以及mysql的用户,以便系统对数据库进行操作
1 | [root@localhost local]# useradd -r -M -s /sbin/nologin mysql |
更改mysql目录的拥有者和分组
这里采用 -R 递归的方式更改
1 | //1. 更改软连接为mysql用户组的mysql用户 |
初始化---------非常非常重要的概念------------
首先切换到mysql目录下
1 | [root@localhost local]# cd mysql-5.7.13 |
使用初始化指令
1 | [root@localhost mysql-5.7.13]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.13/ --datadir=/usr/local/mysql-5.7.13/data |
第一,这里有些教程使用了 bin/mysql_install_db 命令,这个命令在mysql 5.7版本被弃用了,改为了 mysqld –initialize 如果使用错误的初始化指令可能会引起一些未知的BUG
第二,该命令最好在mysql目录下执行,因为如果不在此目录,脚本中有些命令根据相对路径寻址可能会找不到对应函数,造成初始化失败
该命令解析下来是以下内容
- in/mysqld –initialize:执行初始化
- –user=mysql:使用mysql用户进行初始化
- –basedir=/usr/local/mysql-5.7.13/:mysql的基础目录是该地址
- –datadir=/usr/local/mysql-5.7.13/data:mysql运行中产生的数据保存到这个data地址(不存在会新建文件夹)
初始化成功
初始化成功会看到一些Warning信息以及一个 初始密码
1 | 2016-07-19T13:47:19.644607Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). |
最后一行表明初始密码为 5N=>Qkolqg.L
MySQL的配置
配置文件和命令外移
MySQL初始化成功后按说就可以使用了,但是最好先进行一些简单的配置
1 | //1. 首先把默认的配置文件设置给mysql,即etc目录下的my.cnf文件 |
进入安全模式和重启
配置好之后,需要重启使新的配置生效,首先进入安全模式
1 | [root@localhost mysql-5.7.13]# bin/mysqld_safe --user=mysql & |
在安全模式下是看不到系统用户[root@localhost mysql-5.7.13]的,但是也可以输入指令,使用系统级的函数进行重启mysql
1 | ...... |
顺利的话会看到提示信息
1 | Shutting down MySQL..2016-07-19T13:50:10.002192Z mysqld_safe mysqld from pid file /usr/local/mysql-5.7.13/data/localhost.localdomain.pid ended |
设置mysql开机启动
1 | [root@localhost mysql-5.7.13]# chkconfig --level 35 mysql.server on |
更改初始密码
MySQL的旧版本是不会生成初始密码的,从5.7才开始生成貌似,输入密码的时候是看不到光标的
1 | [root@localhost mysql-5.7.13]# bin/mysql -uroot -p |
进入mysql程序,记得mysql的指令需要以分号结尾
1 | mysql> SET PASSWORD=PASSWORD('root'); |
由于密码改成了root,退出后就可以使用root root登陆了
初始化的时候没记住初始密码
可以去路径下查看,不过有时候文件不存在,我也不知道为什么
1 | [root@localhost mysql-5.7.13]# cat /root/.mysql_secret |
更改mysql命令为系统级
在刚刚登陆mysql的时候,我们是在mysql的目录下使用 bin/mysql 登陆的,如果想在任意目录下使用mysql,需要在系统的环境变量里添加该路径
如果你是root用户,需要修改root下的.bashrc文件
1 | [root@localhost /]# cd root/ |
如果你不是root用户,也可以修改自己用户路径/home/用户名/…下的.bashrc文件,原理是一样的
.bashrc文件的修改
打开.bashrc 后再最后最$PATH进行重新赋值
1 | # .bashrc |
两个.bash文件的区别(小知识,可以不看)
进入命令行有2种方式,第一是login方式,比如ssh,第二个是non-login比如在图形界面下打开一个新的tab
~/.bash_profile:用户可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的 .bashrc 文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
由于/.bash_profile login 方式进入bash 运行的,/.bashrc 是 non-login 方式进入bash 运行的,且profile会调用后者,所以建议修改后者