抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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:

rpm -qa | grep mysql

如果你系统有安装,那可以选择进行卸载:

rpm -e mysql  // 普通删除模式
rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

开始安装

接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/

MySQLyum下载截图

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server

初始化 MySQL:

mysqld --initialize

启动 MySQL:

systemctl start mysqld

查看 MySQL 运行状态:

systemctl status mysqld

注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。

验证安装

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

[root@host]# mysqladmin -u root password "new_password"

现在你可以通过以下命令来连接到Mysql服务器:

[root@host]# mysql -u root -p
Enter password:*******

使用tar包解压安装

安装准备

首先在官网https://dev.mysql.com/downloads/mysql/5.7.html#downloads中下载MySQL Community Server

MySQL.tar官方下载截图

weget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

开始安装

[root@localhost home]# tar -zvxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 
[root@localhost home]# mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/

在安装过程中,我是将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

Mysql官方说明

my-default.cnf内容如下:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

# 一般配置选项
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/lib/mysql/mysqld.sock
character-set-server=utf8

back_log = 300
max_connections = 3000
max_connect_errors = 50
table_open_cache = 4096
max_allowed_packet = 32M
#binlog_cache_size = 4M

max_heap_table_size = 128M
read_rnd_buffer_size = 16M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
ft_min_word_len = 8

thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log-bin=mysql-bin
long_query_time = 6

server_id=1

innodb_buffer_pool_size = 1G
innodb_thread_concurrency = 16
innodb_log_buffer_size = 16M

innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = on

[mysqldump]
quick

max_allowed_packet = 32M

[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates

[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
open-files-limit = 8192

[client]
socket = /var/lib/mysql/mysqld.sock

复制my-default.cnf到etc目录下

[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf

在my.cnf中,我们需要需要修改一些东西,修改内容如下:

  • 指定数据库地址
  • 设置字符
# 一般配置选项
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/run/mysqld/mysqld.sock
character-set-server=utf8

其中需要注意的是,如果你修改了mysql下的socket,对应的还应修改client下得socket

初始化数据库:

在进行该步骤的时候,你可以新建一个用户,当然也可以使用root。

[root@localhost mysql]# useradd mysql
[root@localhost mysql]# chown -R mysql . 
[root@localhost mysql]# pwd
/usr/local/mysql
[root@localhost mysql]# ./bin/mysqld --user=mysql --initialize

在初始化之后,控制台会打印这样一句话:

2018-07-22T09:47:53.807466Z 1 [Note] A temporary password is generated for root@localhost: !qfyPBhX.2%l

这就是MySQL root 账户的默认密码,当然如果你忘记了也没关系,我们可以修改root账户密码,具体见下文(补充说明)。

验证安装

启动mysql

[root@localhost mysql]# sudo ./bin/mysqld --user=root

第一次启动可能会报如下错误:

2018-07-22T10:01:40.700536Z 0 [ERROR] Could not create unix socket lock file /var/lib/mysql/mysqld.sock.lock.
2018-07-22T10:01:40.700538Z 0 [ERROR] Unable to setup unix socket lock file.
2018-07-22T10:01:40.700540Z 0 [ERROR] Aborting

这种错误一般都是目录不存在或者权限不足,所以我们手动创建目录:

[root@localhost mysql]# mkdir /var/lib/mysql

连接mysql

[root@localhost mysql]# ./bin/mysql -uroot -p
Enter password: 
mysql> 

另外值得一提的是,如果你是首次登陆,那么mysql会提示使用alter修改密码:

mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解决办法:

mysql> set password = password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> alter user root@localhost password expire never;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

完成之后再推出重新登陆就可以了。

另外的启动方式

在support-files目录下有个mysql.server文件,我们也可通过这个文件启动mysql

[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

[root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2、赋予可执行权限

[root@localhost mysql]# chmod +x /etc/init.d/mysqld

3、添加服务

[root@localhost mysql]# chkconfig --add mysqld

4、显示服务列表

[root@localhost mysql]# chkconfig --list
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

此时已经将MySQL服务加入到自启了。

当然你也可以自己写脚本来实现

编写脚本如下:

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff
/usr/local/mysql/support-files/mysql.server start --user=root

然后在/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

mysql> use mysql; 
mysql> update user set password=password('123') where user='root' and host='localhost'; 
mysql> flush privileges; 

上文是针对5.6及其以下的修改方式,如果你是5.7的版本,则会报这样一个错误

ERROR 1054 (42S22): Unknown column 'passsword' in 'field list'

这是因为,MySQL5.7 password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”。

update user set authentication_string=password('123456') where user="root";

使用SET PASSWORD命令

mysql> set password for 用户名@localhost = password('新密码'); 
mysql> alter user root@localhost password expire never;
mysql> flush privileges; 

使用mysqladmin命令

mysql> mysqladmin -u用户名 -p旧密码 password 新密码  
mysql> flush privileges; 

忘记MySQL登陆密码时

先关闭MySQL服务

执行命令:

[root@localhost mysql]#./mysqld_safe --skip-grant-tables &

执行该命令后mysql会自动重启 ,如果没有重启,请手动启动一下

[root@localhost mysql]#./mysql
mysql> flush privileges; 
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

评论