Linux下安装MySQL
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
安装步骤
- 创建用户和用户组
groupadd mysql
useradd -r -g mysql mysql
- 解压安装包
tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
- 复制到安装目录
cp -r mysql-5.6.42-linux-glibc2.12-x86_64 /usr/local/mysql
- 初始化及安装操作
# 初始化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密码
设置用户密码有如下三种方式,推荐使用第一种
- 执行
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 #输入密码重新登录
- 更新User表,执行命令
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
- 使用
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