• ubuntu14.04下简易二进制安装mysql


    下载mysql-commnunity的5.6.24通用二进制版

    tar解压

    我安装到/opt目录,所以mv到/opt/

    可选,建了个软链 ln -s *** mysql

    添加运行mysql服务的用户和组

    mysqlgroup   groupadd useradd -r(系统,不可登录)

    递归更改mysql主目录所属用户、组和访问权限

    (目的是为了保证安装过程中  mysql用户 对 mysql中的各目录和文件的读写访问权限)

    chown -R chgrp -R

    二进制安装必须自己初始化data目录,该目录中就包mysql的系统数据库

    系统数据库中包含grant表,该表中存储了mysql各用户访问服务的权限

    http://dev.mysql.com/doc/refman/5.6/en/data-directory-initialization.html

    mysql_install_db不会重写已存在的权限表。如果没有以mysql用户登录,则必须指定--user参数。如果不安装在/user/local目录,必须指定--basedir和--datadir参数。

    mysql_install_db在创建系统数据库的同时,也创建了test数据库,为test_用户加入了访问权限,方便测试是否初始化成功。

    sudo mysql/scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data。

    另外建议带选项--random-password,为默认的root用户带上随机密码。

    此时可能出现的问题及解决方法如下:http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db-problems.html

    安装完成后,目录中有存储插件的目录(由系统变量中plugin_dir指定的目录)如果对服务开放了写权限的话是不安全的。此时可以把该目录设为只读,或者在服务启动时为该目录增加secure_file_priv变量。

    初始化同时在mysql的数据库中建立了时区表timezone但并没有设置为本地时区。

    更改mysql目录的所有者(可选)

    目录的所有更可以选择更改为root用户,但是对于 data 目录,该目录所有者必须为 mysql用户。

    启动MySQL服务

    在Unix系统上建议使用mysqld_safe 来启动MySQL服务,它调用mysqld,但比mysqld多了一些安全特性。

    如果当前工作目录为mysql主目录,那么直接运行mysqld_safe &时它会自动寻找当前工作目录中相关的服务和数据库。但如果当前目录不是mysql主目录,则要指定--ledir和--datadir参数。另外,还可心在启动时指定错误日志和运行日志参数。

    cd /opt/mysql

    sudo /opt/mysql/bin/mysqld_safe --user=mysql --ledir=/opt/mysqlbin (出错时,可以根据错误信息,然后--help查看并修改启动参数)

    复制配置文件

    如果要为mysql启动时配置参数,如--datadir,--basedir等参数,则须要将my.cnf复制到/etc或者/etc/mysql

    mysql最先调用/etc下的my.cnf,然后是mysql主目录中的my.cnf,在修改配置文件时最好在指定--user时不要使用root,改而使用诸如mysql等其它用户。如果其它地方指定启动参数--user,都会覆盖/etc下的my.cnf。

    另外,如果要在表中存中文的话,mysql默认的是latin1字符集,不能表示拉丁语系以外的语言。

    mysql中执行show variables like 'character%';或者s都可以查看当前的字符集

    所以在修改my.cnf:(在client,mysqld和mysql中添加如下内容):

    [client]
    default-character-set=utf8
    [mysqld]
    character-set-server=utf8
    [mysql]
    default-character-set=utf8

    建表的时候也要设置字符集为UTF8:default character set=utf8;

    设置自动启动

    mysql.server脚本会调用mysqld_safe来启动服务。若要设置为自动启动,编辑其中的启动参数并复制到/etc/init.d,设置为可执行。

    另外,mysql.server 只支持start和stop参数。启动时会用到/etc/my.cnf中的参数

    cp mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql

    然后配置系统的启动选项并将mysql.server添加到启动项中。ubuntu14.04LTS中没有chkconfig,可以apt-get安装,或者用其它命令如update-rc.d等,或者直接手动更改。

    sudo ln /etc/init.d/mysql /etc/rc2.d/S20mysql

    关于开机启动:linux 随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件,另外在/etc还有c1.d, rc2.d……rc6.d,这些都是linux不同的runlevel

    • 0        系统停机状态
    • 1        单用户模式,只准许root用户对系统进系维护
    • 2~5  多用户模式(其中3为字符界面、5为图形界面)
    • 6         重启启动

    runlevel命令可查看当前运行级别,rcX.d的脚本文件就是运行第X级时要随机启动的服务程序。rcX.d下的文件都是/etc/init.d下文件的一个软链,而每个rcX.d只链接它自己启动需要的相应的程序。要使某个程序开机启动,我们可以编写一个脚本程序,把它放到/etc/init.d里,然后在rcX.d里做一个相 应的软链就可以了(软链要改名,S开头表启动,K开关表不启动)。

    #!/bin/bash

    //要运行的命令

    第一行是声明用什么终端运行这个脚本,后面写要运行的命令。

    设置mysql的root用户密码以及其它安全相关

    如果在初始化data目录时没指定密码。此时可以登录mysql后更改密码。

    cd /opt/mysql/bin

    mysql>select password('密码明文');得出41位的16进制密码密文 。然后mysql>set password for '用户'@'主机'='密文';

    或者直接set password for '用户'@'主机'=password('密码明文');

    shell> mysql -u root
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
    mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
    mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');
    mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

    或者可以直接用update命令更新所有root用户:

    shell> mysql -u root
    mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
        ->     WHERE User = 'root';
    mysql> FLUSH PRIVILEGES;(立即应用更改,而不是等到重启服务)

    登录时./mysql -uroot -pabc123。

    更改匿名用户的密码也是一样。

    删除匿名用户:  DROP USER ''@'host_name';

    默认情况下,mysql.db中含有一些特殊行,这些行的User列是空的,这些行的存在使得任何用户都能连接到test数据库和以test_开头的数据库。以下是两种解决办法:

    第一种,删掉mysql.db中所有能连接到test或test_开头的数据库的行。

    mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
    mysql> FLUSH PRIVILEGES;

    第二种可以直接删掉test数据库。

    DROP database test;

    忘记mysql的root用户密码时的办法

    方案一:

    停止mysql服务,启动mysql服务,带--skip-grant-tables(不读权限表启动,任何用户都有所有权限,不输用户名都能更改其它用户密码),为了安全起见,再带上--skip-networking来断开mysql的网络服务。

    shell> mysql

    mysql> FLUSH PRIVILEGES;

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

    方案二:

    ps出mysql服务的进程id, kill掉。(或者这个process id在mysql主目录下/data里的*.pid里也有)

    然后在某个目录下建一个mysql-init文件(文件名随意),文件内容为SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

    再然后用mysqld_safe启动服务,带参数mysqld_safe --init-file=文件路径/mysql-init &

    这样启动时就更改了文件中的命令

  • 相关阅读:
    ionic中关于ionicView 的生命周期
    ES6新特性之 promise
    使用angular中ng-repeat , track by的用处
    关于前端性能优化的思考
    浅谈JavaScript之原型
    浅谈JavaScript的New关键字
    JavaScript中闭包之浅析解读
    python3 linux下安装
    mycat高可用方案
    mysql高可用方案
  • 原文地址:https://www.cnblogs.com/yuantf/p/4456856.html
Copyright © 2020-2023  润新知