MySQL数据库管理安装
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
单点(Single),适合小规模应用,复制(Replication),适合中小规模应用,集群(Cluster),适合大规模应用。
MySQL Community Server 数据库服务
MySQL Cluster 数据库集群
MySQL Router 数据库路由(中间件)
MySQL Shell
MySQL Workbench 数据库应用程序包(开发用的)
源代码方式和二进制包是软件包的两种形式。二进制包里面包括了已经经过编译,可以马上运行的程 序。你只需要下载和解包(安装)它们以后,就马上可以使用。源代码包里面包括了程序原始的程序代码,需要在你的计算机上进行编译以后才可以产生可以运行程 序,所以从源代码安装的时间会比较长。
源码安装
与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 同一台主机上面可以安装多个MySQL;
f) 等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
1.3 源码包
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测试
/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
[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
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
mysqld --defaults-file=/mysql/data/3306/my.cnf --user=mysql &
mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --user=mysql &
mysqld_safe 用的最多,最安全
& 后台启动
[root@mysql5 ~]# mysqladmin -u root -p shutdown
Enter password:
service mysql stop 建立脚本以后关闭
Mysql的进程不能乱kill会出问题。有问题。
/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以后马上就是。
Includes boost 按照MySQL的必要条件,下载第二个,就不用再去下载boost了,
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
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
tar -zxvf cmake-3.5.2.tar.gz
tar -zxvf mysql-boost-5.7.20.tar.gz
/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).
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
只要是二进制安装的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
[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
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;
远程登陆表
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 |
+-----------+------+