博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL数据库管理-安装
阅读量:4171 次
发布时间:2019-05-26

本文共 8784 字,大约阅读时间需要 29 分钟。

MySQL数据库管理安装

概述

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

单点(Single),适合小规模应用,复制(Replication),适合中小规模应用,集群(Cluster),适合大规模应用。

一 下载MySQL数据库

MySQL Community Server    数据库服务

MySQL Cluster                     数据库集群

MySQL Router                     数据库路由(中间件)

MySQL Shell                        

MySQL Workbench            数据库应用程序包(开发用的)

    1. RPM包

    1. 二进制包

源代码方式和二进制包是软件包的两种形式。二进制包里面包括了已经经过编译,可以马上运行的程 序。你只需要下载和解包(安装)它们以后,就马上可以使用。源代码包里面包括了程序原始的程序代码,需要在你的计算机上进行编译以后才可以产生可以运行程 序,所以从源代码安装的时间会比较长。

源码安装

与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 同一台主机上面可以安装多个MySQL;
f) 等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;

1.3 源码包

二 生产环境Linux二进制安装配置MySQL

1操作系统环境检查

Libaio

[root@mysql5 ~]# rpm -qa | grep libaio

libaio-0.3.107-10.el6.x86_64

2安装过程

1.上传安装堤序,解压安装程序包,2创建用户,组,创建目录.,3修改权限,4配置环境变量,5准备参数文件

,6初始化MYSQL,7配置启动脚本,8启停验证,日志查看,9后期配置(密码,启动远程访问),10测试

2.1 创建用户,组,创建目录

/bin/false是最严格的禁止login选项,一切服务都不能用,

/sbin/nologin只是不允许系统login,可以使用其他ftp等服务

mkdir -p /mysql/app

mkdir -p /mysql/log

mkdir -p /mysql/data

mkdir -p /mysql/backup

mkdir -p /mysql/data/3306/data

mkdir -p /mysql/log/3306

 

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

chown -R mysql:mysql /mysql

2.2 安装文件

[root@mysql5 app]# tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

 

设置软连接

[root@mysql5 app]# ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql

[root@mysql5 app]# ll

总用量 626112

lrwxrwxrwx 1 root root        35 7月  10 19:51 mysql -> mysql-5.7.20-linux-glibc2.12-x86_64

drwxr-xr-x 9 root root      4096 7月  10 19:42 mysql-5.7.20-linux-glibc2.12-x86_64

 

[root@mysql5 mysql]# mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

原来有安装软件-需要卸载

[root@mysql5 mysql]# rpm -qa | grep mysql

mysql-5.1.73-8.0.1.el6_8.x86_64

mysql-devel-5.1.73-8.0.1.el6_8.x86_64

mysql-libs-5.1.73-8.0.1.el6_8.x86_64   #不需要卸载

 

[root@mysql5 mysql]# rpm -e mysql-devel-5.1.73-8.0.1.el6_8.x86_64

[root@mysql5 mysql]# rpm -e mysql-5.1.73-8.0.1.el6_8.x86_64

[root@mysql5 mysql]# mysql

-bash: /usr/bin/mysql: 没有那个文件或目录

vim ~/.bash_profile

PATH=$PATH:$HOME/bin

PATH=$PATH:/mysql/app/mysql/bin:$HOME/bin

source .bash_profile

chown -R mysql:mysql /mysql

2.3 初始化Mysql

Mysql数据库默认的参数文件是再/etc/my.cnf,如果存在,可能是linux-内置的Mysql数据库导致。

[root@mysql5 ~]# more /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

copy 一个通用的my.cnf配置文件,进行修改。

增加权限-修改适当参数-建立需要的文件

chown mysql:mysql my.cnf

[root@mysql5 3306]# touch /mysql/log/3306/itpuxdb-error.err

[root@mysql5 3306]# chown mysql:mysql /mysql/log/3306/itpuxdb-error.err

 

mysqld其实是SQL后台程序(也就是MySQL服务器),它是关于服务器端的一个程序,mysqld意思是mysql daemon,在后台运行,监听3306端口,如果你想要使用客户端程序,这个程序必须运行,因为客户端是通过连接服务器来访问数据库的。你只有启动了mysqld.exe,你的mysql数据库才能工作。

mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data/  --pid-file=/mysql/data/3306/mysql.pid

--defaults-file  配置文件

--basedir 软件目录

--datadir  数据目录

初始化成功-会给一个Mysql数据库用的root和秘密。这个是Mysql软件生产的秘密。

root@localhost: nxokKBdiW6:7

2.4 二进制的Mysql启动与停止

2.4.1 手动启动MySQL服务

mysqld --defaults-file=/mysql/data/3306/my.cnf --user=mysql &

mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --user=mysql &

mysqld_safe 用的最多,最安全

& 后台启动

2.4.2 手动关闭MySQL服务

[root@mysql5 ~]# mysqladmin -u root -p shutdown

Enter password:

service mysql stop 建立脚本以后关闭

 

Mysql的进程不能乱kill会出问题。有问题。

2.4.3 制作mysql启动与停止脚本

/mysql/app/mysql/support-files里面有mysql.server可以做成启动和停止脚本,也可以做出开机自启动。

需要修改的地方把basedir和datadir修改成争取的参数

basedir=/mysql/app/mysql

datadir=/mysql/data/3306/data

设置pid文件

mysqld_pid_file_path=/mysql/data/3306/mysql.pid

修改启动命令

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

增加启动的参数文件

$bindir/mysqld_safe --defaults-file=/mysql/data/3306/my.cnf    --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

把文件copy到/etc/init.d/

cp mysql.server /etc/init.d/mysql

制作完脚本以后-总是报错-吧/etc/my.cnf删除解决。

[root@mysql5 3306]# service mysql start

Starting MySQL.The server quit without updating PID file (/[失败]data/3306/mysql.pid).

第一个是 rm -rf /etc/my.cnf

第二个是  $bindir/mysqld_safe  --defaults-file=/mysql/data/3306/my.cnf --datadir="$datadir"  --user=mysql --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

   是主参数,需要再mysqld_safe以后马上就是。

三 生产环境Linux源码编辑安装MySQL

 Includes boost 按照MySQL的必要条件,下载第二个,就不用再去下载boost了,

3.1 安装依赖包

yum install gcc  -y

yum install g++ -y

yum install bison -y

yum install ncurses -y

yum install ncurses-devel  -y

yum install zlib  -y

yum install libxml2  -y

yum install openssl  -y

yum install libstdc++-devel  -y

yum install gcc-C++ -y

3.2 创建用户,组,创建目录,卸载原来的MySQL

mkdir -P /mysql/app

mkdir -P /mysql/log

mkdir -p /mysql/data

mkdir -p /mysql/backup

mkdir -p /mysql/data/3306/ data

mkdir -p /mysql/log/3306

 

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

chown -R mysql:mysql /mysql

 

[root@mysql5 mysql]# rpm -qa | grep mysql

mysql-5.1.73-8.0.1.el6_8.x86_64

mysql-devel-5.1.73-8.0.1.el6_8.x86_64

mysql-libs-5.1.73-8.0.1.el6_8.x86_64

rpm -e mysql-devel-5.1.73-8.0.1.el6_8.x86_64

rpm -e mysql-5.1.73-8.0.1.el6_8.x86_64

3.3 源码安装  mysql

tar -zxvf cmake-3.5.2.tar.gz

tar -zxvf mysql-boost-5.7.20.tar.gz

1 cmake安装编译工具

/mysql/app/cmake-3.5.2

./bootstrap

CMake has bootstrapped.  Now run gmake.

 

gmake

Scanning dependencies of target foo

[100%] Building CXX object Tests/FindPackageModeMakefileTest/CMakeFiles/foo.dir/foo.cpp.o

[100%] Linking CXX static library libfoo.a

[100%] Built target foo

 

gmake install

-- Installing: /usr/local/share/cmake-3.5/completions/cmake

-- Installing: /usr/local/share/cmake-3.5/completions/cpack

-- Installing: /usr/local/share/cmake-3.5/completions/ctest

[root@mysql5 cmake-3.5.2]# gmake install

[root@mysql5 cmake-3.5.2]# cmake --version

cmake version 3.5.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

2源码安装

cd mysql-5.7.20/

cmake . -DCMAKE_INSTALL_PREFIX=/mysql/app/mysql  -DENABLED_LOCAL_INFILE=1  -DMYSQL_DATADIR=/mysql/data/3306/data  -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/mysql/data/3306 -DMYSQL_UNIX_ADDR=/mysql/data/3306/mysql.sock  -DMYSQL_TCP_PORT=3306  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_EXTRA_CHARSETS=all  -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/mysql/app/mysql-5.7.20/boost/boost_1_59_0.

#############安装

make

make install

5 其他问题

5.1密码过期问题

只要是二进制安装的MySQL都有密码过期问题。

error: 'Your password has expired. To log in you must change it using a client that supports expired passwords.'

再my.cnf 开始就加上

skip-grant-tables

[client]

port=3306

socket  = /mysql/data/3306/mysql.sock

 

[mysql]

no-beep

prompt="\u@itpux \R:\m:\s [\d]> "

#no-auto-rehash

auto-rehash

default-character-set=utf8

 

 

[mysqld]

########basic settings########

skip-grant-tables

server-id=3306

[root@mysql5 3306]# mysql

mysql>

select * from mysql.user where user='root'\G

password_expired: Y

mysql> update user set password_expired='N' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

刷新权限

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

最后再注释skip-grant-tables

# skip-grant-tables

 

 

5.2 mysql.sock问题

[root@mysql5 3306]# mysql -u root -p

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

可以建立一个软连接

ln -s /mysql/data/3306/mysql.sock /tmp/mysql.sock

5.3 MySQL密码错误问题

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

再my.cnf 开始就加上,不需要密码认证

skip-grant-tables

mysql> use mysql

Database changed

1 复杂改密码

mysql> update user set authentication_string=password('root') where user='root';

Query OK, 1 row affected, 1 warning (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 1

刷新权限

mysql> flush privileges;

 

2简单改密码:

 

mysql> set password = PASSWORD('root');

 

[root@mysql5 ~]# service mysql stop

Shutting down MySQL....                                    [确定]

[root@mysql5 ~]# service mysql start

Starting MySQL.                                            [确定]

[root@mysql5 ~]# mysql -uroot -proot

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql>

刷新权限

mysql> flush privileges;

5.4 远程登陆问题

远程登陆表

mysql> select host,user from user where user='root';

+-----------+------+

| host      | user |

+-----------+------+

| localhost | root |

+-----------+------+

1 row in set (0.00 sec)

再所有的数据库和所有的表to  root用户 什么主机%(全部主机),密码root

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

Query OK, 0 rows affected, 1 warning (0.00 sec)

刷新权限

mysql> flush privileges;

增加了一条所有主机的权限

mysql> select host,user from user where user='root';

+-----------+------+

| host      | user |

+-----------+------+

| %         | root |

| localhost | root |

+-----------+------+

转载地址:http://nxbai.baihongyu.com/

你可能感兴趣的文章
最近接了本分布式组件面试书的选题,请大家一起来提意见
查看>>
Redis整合MySQL和MyCAT分库组件(来源是我的新书)
查看>>
Java程序员普遍存在的面试问题以及应对之道(新书第一章节摘录)
查看>>
程序员高效出书避坑和实践指南
查看>>
计算机方面毕业生怎样写简历
查看>>
从软件公司的异同点讲起,聊聊未来的程序员该如何选公司和谋规划
查看>>
我不想安于当前的限度,以达到所谓的幸福,回顾下2020年的我
查看>>
如何在面试中介绍自己的项目经验(面向java改进版)
查看>>
通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)
查看>>
如果很好说出finalize用法,面试官会认为你很资深
查看>>
分析若干没面试机会和没体现实力的简历
查看>>
用python的matplotlib和numpy库绘制股票K线均线
查看>>
以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
查看>>
GanttProject 使用的控件第三方包:jdnc-modifBen.jar
查看>>
ps、grep和kill联合使用杀掉进程
查看>>
openfire中的mina框架使用
查看>>
去掉Windows Messager的自动登录
查看>>
dspace可以检索中文了
查看>>
利用Eclipse编辑中文资源,配置文件
查看>>
将中文转为unicode 及转回中文函数
查看>>