Linux下安装MySQL

作者: 若兮缘 | 来源:发表于2019-01-07 18:33 被阅读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

    相关文章

      网友评论

        本文标题:Linux下安装MySQL

        本文链接:https://www.haomeiwen.com/subject/hlhprqtx.html