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/
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
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
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)
完成之后再推出重新登陆就可以了。
Windows下安装
关于Windows下得安装方法,主要分为两种,一种为使用官方安装包,另一种为安装绿色版。
官方安装包下载地址:https://dev.mysql.com/downloads/mysql/
绿色版安装方式与linux下的tar安装方式大致相同,此处不做多余赘述。
补充说明
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('你的新密码');