
MySQL安装
MySQL安装
Linux下安装MySQL
使用yum方式安装
yum方式安装方式摘自菜鸟教程(http://www.runoob.com/mysql/mysql-install.html)
Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:
- MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
- MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
- MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
- MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
- MySQL-bench - MySQL数据库服务器的基准和性能测试工具。
安装准备
安装前,我们可以检测系统是否自带安装 MySQL:
1 | rpm -qa | grep mysql |
如果你系统有安装,那可以选择进行卸载:
1 | rpm -e mysql // 普通删除模式 |
开始安装
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/
1 | wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm |
初始化 MySQL:
1 | mysqld --initialize |
启动 MySQL:
1 | systemctl start mysqld |
查看 MySQL 运行状态:
1 | systemctl status mysqld |
**注意:**如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。
验证安装
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
1 | [root@host]# mysqladmin -u root password "new_password" |
现在你可以通过以下命令来连接到Mysql服务器:
1 | [root@host]# mysql -u root -p |
使用tar包解压安装
安装准备
首先在官网https://dev.mysql.com/downloads/mysql/5.7.html#downloads中下载MySQL Community Server
1 | weget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz |
开始安装
1 | [root@localhost home]# tar -zvxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz |
在安装过程中,我是将mysql安装在/usr/local/mysql目录下,当然你也可以自定义你的安装位置
此时在mysql/support-files里一般会有一个my-default.cnf。如果你的版本高于5.7.18的话,那么是没有my-default.cnf文件的,此时就需要自己创建一个。
官网说明如下:
https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
my-default.cnf内容如下:
1 | # For advice on how to change settings please see |
复制my-default.cnf到etc目录下
1 | [root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf |
在my.cnf中,我们需要需要修改一些东西,修改内容如下:
- 指定数据库地址
- 设置字符
1 | # 一般配置选项 |
其中需要注意的是,如果你修改了mysql下的socket,对应的还应修改client下得socket
初始化数据库:
在进行该步骤的时候,你可以新建一个用户,当然也可以使用root。
1 | [root@localhost mysql]# useradd mysql |
在初始化之后,控制台会打印这样一句话:
1 | 2018-07-22T09:47:53.807466Z 1 [Note] A temporary password is generated for root@localhost: !qfyPBhX.2%l |
这就是MySQL root 账户的默认密码,当然如果你忘记了也没关系,我们可以修改root账户密码,具体见下文(补充说明)。
验证安装
启动mysql
1 | [root@localhost mysql]# sudo ./bin/mysqld --user=root |
第一次启动可能会报如下错误:
1 | 2018-07-22T10:01:40.700536Z 0 [ERROR] Could not create unix socket lock file /var/lib/mysql/mysqld.sock.lock. |
这种错误一般都是目录不存在或者权限不足,所以我们手动创建目录:
1 | [root@localhost mysql]# mkdir /var/lib/mysql |
连接mysql
1 | [root@localhost mysql]# ./bin/mysql -uroot -p |
另外值得一提的是,如果你是首次登陆,那么mysql会提示使用alter修改密码:
1 | mysql> use mysql; |
解决办法:
1 | mysql> set password = password('123456'); |
完成之后再推出重新登陆就可以了。
另外的启动方式
在support-files目录下有个mysql.server文件,我们也可通过这个文件启动mysql
1 | [root@localhost mysql]# ./support-files/mysql.server start --user=root |
Windows下安装
关于Windows下得安装方法,主要分为两种,一种为使用官方安装包,另一种为安装绿色版。
官方安装包下载地址:https://dev.mysql.com/downloads/mysql/
绿色版安装方式与linux下的tar安装方式大致相同,此处不做多余赘述。
补充说明
将MySQL加入到开机自启
1、将服务文件拷贝到init.d下,并重命名为mysql
1 | [root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld |
2、赋予可执行权限
1 | [root@localhost mysql]# chmod +x /etc/init.d/mysqld |
3、添加服务
1 | [root@localhost mysql]# chkconfig --add mysqld |
4、显示服务列表
1 | [root@localhost mysql]# chkconfig --list |
此时已经将MySQL服务加入到自启了。
当然你也可以自己写脚本来实现
编写脚本如下:
1 | #!/bin/sh |
然后在/etc/rc.local脚本的末尾添加一行以绝对路径启动脚本的行;
MySQL配置文件读取顺序
在Unix和类Unix系统上,MySQL程序按照指定的顺序从下表中显示的文件中读取启动选项(首先列出的文件首先读取,后面读取的文件优先)。
文件路径 | 说明 |
---|---|
/etc/my.cnf | 全局选择 |
/etc/mysql/my.cnf | 全局选择 |
SYSCONFDIR/my.cnf | 全局选择 |
$MYSQL_HOME/my.cnf | 特定服务器选择 |
defaults-extra-file | 特别指定的文件 |
~/.my.cnf | 用户特定选项 |
~/.mylogin.cnf | 用户特定的登录路径选项(仅限客户端) |
其中,~表示当前用户的主目录(即$HOME)
SYSCONFDIR表示在构建MySQL时SYSCONFDIR使用CMake选项指定的目录。默认情况下,这是etc位于已编译安装目录下的目录。
MYSQL_HOME是一个环境变量,包含服务器特定my.cnf文件所在目录的路径 。如果 MYSQL_HOME未设置并使用mysqld_safe程序启动服务器,则 mysqld_safe将其设置 BASEDIR为MySQL基本安装目录。
MySQL密码修改方式
使用UPDATE直接编辑user表
首先登录MySQL
1 | mysql> use mysql; |
上文是针对5.6及其以下的修改方式,如果你是5.7的版本,则会报这样一个错误
1 | ERROR 1054 (42S22): Unknown column 'passsword' in 'field list' |
这是因为,MySQL5.7 password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”。
1 | update user set authentication_string=password('123456') where user="root"; |
使用SET PASSWORD命令
1 | mysql> set password for 用户名@localhost = password('新密码'); |
使用mysqladmin命令
1 | mysql> mysqladmin -u用户名 -p旧密码 password 新密码 |
忘记MySQL登陆密码时
先关闭MySQL服务
执行命令:
1 | [root@localhost mysql]#./mysqld_safe --skip-grant-tables & |
执行该命令后mysql会自动重启 ,如果没有重启,请手动启动一下
1 | [root@localhost mysql]#./mysql |