数据库Linuxlinux tools

Linux下安装MySQL

2019-01-07  本文已影响263人  若兮缘
MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。
MySQL官网:https://www.mysql.com/

特点

MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

MySQL安装

MySQL下载

进入官网下载:https://dev.mysql.com/downloads/mysql/5.6.html#downloads
选择版本5.6.42,选择操作系统Linux-Generic,选择系统位数64位,点击download。
Linux环境:centos6.8

安装步骤
  1. 创建用户和用户组
    groupadd mysql
    useradd -r -g mysql mysql
  2. 解压安装包
    tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
  3. 复制到安装目录
    cp -r mysql-5.6.42-linux-glibc2.12-x86_64 /usr/local/mysql
  4. 初始化及安装操作
# 初始化data目录
cd /usr/local/mysql/
mkdir ./data/mysql
# 将当前目录的所有者和所属组改为了mysql
chown -R mysql:mysql .
# 安装数据库(指定用户和data目录位置)
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
# 将当前目录的所有者改为root
chown -R root .
# 将/usr/local/mysql/data目录的所有者改为mysql
chown -R mysql data
# 复制配置文件到etc下(/etc/my.cnf是默认加载的配置文件)
cp support-files/my-default.cnf /etc/my.cnf
# 将mysql服务注册到默认服务管理目录
cp support-files/mysql.server /etc/init.d/mysqld
# 修改启动脚本
vim /etc/init.d/mysqld
# 修改以下两项
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data/mysql
环境变量配置

为了方便在任意位置使用mysql命令脚本,而不用使用绝对路径,可以将mysql安装目录下的bin目录加入到环境变量。
编辑环境变量配置文件:vim /etc/profile
在文件末尾位置添加如下内容:
export PATH=/usr/local/mysql/bin:$PATH
通过vim的 ":wq" 命令进行保存退出
使配置生效:source /etc/profile

MySQL验证

启动mysql:service mysqld start;
执行 mysql -uroot -p 命令,密码不用输入直接回车,出现如下界面说明安装成功(输入exit退出连接)。

MySQL配置

开机自启动

执行 chkconfig mysqld on
执行 chkconfig --list mysqld 查看(如果2-5位为启用状态即OK)

设置root密码

设置用户密码有如下三种方式,推荐使用第一种

  1. 执行 mysql -uroot -p 命令,不输入密码连接到mysql,然后执行以下命令:
set password for root@localhost=password('your password');
set password for root@127.0.0.1=password('your password');
exit;  #退出mysql
mysql -u root -p  #输入密码重新登录
  1. 更新User表,执行命令
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
  1. 使用mysqladmin工具,在linux命令行下执行,生产环境不建议使用,因为会出现在历史命令中,如果使用最好history -c清空一次历史命令。
mysqladmin -u root password '密码'  #设置新密码
mysqladmin -u root -p password '新密码'  #修改旧密码
删除匿名用户
# 查看是否有匿名用户
select user,host from mysql.user;
# 删除匿名用户
delete from mysql.user where user='';
# 再次查看
select user,host from mysql.user;
# 使操作生效
flush privileges;
防火墙配置

MySQL默认监听3306端口,如果希望外网设备能够访问MySQL可以配置iptables规则开放3306端口。
编辑配置文件:vim /etc/sysconfig/iptables
在文件中间添加iptables规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重启防火墙:service iptables restart
或者直接关闭iptables规则:iptables -F & iptables -t nat -F

创建用户
# 插入新用户
insert into mysql.user(Host,User,Password) values("localhost","yourusername",password("yourpassword"));
# 使操作生效
flush privileges;
创建数据库
create database `dbname` default character set utf8 collate utf8_general_ci;
赋予权限

给root帐号开通外网所有权限,这样就可以通过远程主机连接mysql了。

grant all privileges on *.* to root@'%' identified by 'root密码';
FLUSH PRIVILEGES;
# 查看用户权限
select * from mysql.user \G

ALL PRIVILEGES:表示给指定的用户分配所有的权限,主要包括增、删、改、查等等
on *.*: 表示指定的用户可以对所有数据库的所有数据表进行操作,如果想改为指定数据库的指定数据表,可以用ON 数据库名.数据表名替代
to root:表示给root用户分配操作权限,如果想给其他的用户分配权限,可以将root改为其他的用户名
@'%':表示允许所有的客户端IP进行访问。也就是说,% 表示不限制客户端的IP地址。如果想限制客户端的IP地址,可以将 % 替换为指定的IP地址
IDENTIFIED BY "xxx": 表示被授权的用户的密码

例如:给指定帐号开通testdb数据库的增改查权限,并且指定ip地址

grant select,insert,update on testdb.* to tom@'192.168.0.111' identified by 'tom123';

MySQL常用命令

启动关闭命令

启动:bin/mysqld_safe --user=mysql & #输入命令后回车
关闭:mysqladmin -u root -p shutdown #需要输入密码

服务管理命令

启动mysql:service mysqld start
关闭mysql:service mysqld stop
重启mysql:service mysqld restart
查看mysql状态:service mysqld status

登录命令

mysql -u ${username} -p

常见错误

错误日志查看: vim /usr/local/mysql/data/mysql/localhost.localdomain.err

错误一

错误信息:please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db: Data::Dumper
解决方案:安装autoconf库
执行命令: yum-y install autoconf

错误二

在插入mysql新用户时报错:Field 'ssl_cipher' doesn't have a default value
解决方案:打开配置文件(my.conf),修改sql_mode的值,去掉STRICT_TRANS_TABLES,重启mysql。

数据库导入导出

导入说明

sql脚本导入数据库: mysql -u用户名 -p 数据库名 < sql文件
注意:数据库必须已创建,否则报错Unknown database
例如:mysql -uroot -p testdb < /root/test.sql

导出说明

完整导出命令: mysqldump -u用户名 -p 数据库名 > 存储的文件名
只导出表结构:mysqldump -u用户名 -p -d 数据库名 > 存储的文件名
例如:mysqldump -uroot -p testdb > export_test.sql

上一篇下一篇

猜你喜欢

热点阅读