MySQL是用的很多的关系型数据库。今天来分享一下安装,配置及其连接教程。这里以Debian服务器安装MySQL 8为例。
1,下载MySQL并解压上传
去下载页面下载linux版的mysql安装包。
注意安装之前必须完全卸载MariaDB,先执行:
sudo apt purge mariadb*
然后下载了一个tar文件,解压你会发现解压出来了一堆deb文件,把这些文件全部上传到linux服务器的一个目录里,并cd命令进入那个目录,然后安装所有的deb文件:
sudo dpkg -i *.deb
若安装后有错误信息,则执行:
sudo apt update
sudo apt install -f
期间会显示一个界面让你设置root密码,即数据库超级管理员root的密码,设置即可:
输入密码,ok,然后重复输入密码确认之后会告知你mysql8用了新加密方式,ok即可:
然后会让你选择加密方式,有新加密方式和传统加密方式两种。这里需要说明的是如果选择新加密方式可能远程连接数据库时会报错,所以没特殊需要建议选择传统加密方式:
这样就安装完成了!
2,修改配置文件
其实通常情况下配置文件不需要修改,不过有特殊需要的话就建议修改一下。
mysql 8的配置文件路径是/etc/mysql/my.cnf
。
不过我们一般只需修改服务端的配置即可。服务端配置需要修改/etc/mysql/mysql.conf.d/mysqld.cnf
文件,打开这个文件可以看到:
# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
里面设定了一些默认的数据库文件、日志文件位置,可自行修改。
上面[mysqld]
表示一个配置组,即为服务端配置,这个配置组下面的四行配置依次代表:进程文件位置、socket文件位置、数据库存放文件夹和错误日志文件位置。
下面来说几个常用配置。
(1) MySQL端口
服务端的默认端口是3306,不过在这个文件这可以添加配置修改其端口,接着加入下列语句(在[mysqld]
配置组):
port=自定义端口号
(2) 字符集
然后就是字符集,建议改成utf8mb4,现在上面服务端配置组[mysqld]
里面加入:
character-set-server=utf8mb4
再修改/etc/mysql/my.cnf
这个配置文件,加入[client]
配置组(如果没有的话)并设置字符集,添加如下语句:
[client]
default-character-set=utf8mb4
(3) 解决连接MySQL非常慢的问题
如果说安装了MySQL,然后通过命令行或者Navicat远程连接的时候,都要等少好多秒才能连接上,连接的非常慢的话,可以关闭其域名解析功能。
编辑/etc/mysql/mysql.conf.d/mysqld.cnf
文件,在[mysqld]
配置组下加入如下一行配置即可:
skip-name-resolve
修改完成配置后记得重启mysql服务(见下面3)。
3,启动数据库服务
通过这个目录启动:
service mysql start
还可以停止或者重启:
停止:
service mysql stop
重启(修改完配置文件重启生效):
service mysql restart
安装完成,MySQL的服务端是默认开机自启动的,我们可以通过下列命令打开/关闭MySQL的开机自启动:
允许开机自启:
systemctl enable mysql
禁用开机自启:
systemctl disable mysql
4,设置外网可以连接数据库
在服务器上面输入命令连接数据库:
mysql -u root -p
然后输入管理员密码,就连接成功了。
然后依次执行下列命令:
use mysql;
update user set host='%' where user='root';
flush privileges;
就设置成功了。
5,Windows上连接MySQL
我们在自己的电脑上也要安装MySQL,这个从官网下载Windows MySQL即可。安装配置方法很简单,百度即可,这里不再赘述。(一般是解压,然后把其中bin文件夹所在文件添加至Path环境变量)
配置好后打开cmd,输入命令:
mysql -h 服务器地址 -P 端口(服务端使用默认端口3306可以不要这个-P选项) -u 数据库用户名 -p
接着要输入密码,然后就可以了。
6,MySQL数据库常规操作
登录数据库后,我们要进行添加用户、数据库等操作。
(1)添加用户
create user '用户名'@'可接受连接的主机的ip' identified by '用户密码';
下面给出几个例子:
创建用户a
密码为123456
,a
只能从本机登录(主机字段为localhost
):
create user 'a'@'localhost' identified by '123456';
创建用户b密码为123456,b可以从外网任何主机远程登录(主机字段为%):
create user 'b'@'%' identified by '123456';
然后授权用户:
grant 权限 on 授权可操作的数据库.授权可操作的表名 to '被授权用户'@'可操作的主机ip';
其中权限字段有SELECT
, INSERT
, UPDATE
等,若授予所有权限则这里填ALL
。
例如给b授予操作所有数据库的所有表的全部权限:
grant ALL on *.* to 'b'@'%';
需要注意的是,用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用如下的命令:
grant 权限 on 授权可操作的数据库.授权可操作的表名 to '用户名'@'可操作主机' with grant option;
(2)修改用户密码
在MySQL8中,使用alter
语句修改密码。先登录,然后执行以下语句:
alter user '用户名'@'授权的登录地址' identified by '新密码';
注意登录root
或者任何高权限账户可以修改自己以及其他用户密码,而普通账户登录只能修改自己的密码。授权的登录地址值即为创建账户的时候设定的值(仅本机访问是localhost
,全部可以访问是%
)。
(3)新建数据库
create database 数据库名;
若要指定新建数据库的编码和排序字符集,则使用:
create database 数据库名 character set 编码 collate 排序字符集;
例如:
create database test character set utf8mb4 collate utf8mb4_unicode_ci;
最后切换至数据库:
use 数据库名;