MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

发表于:2018-7-02 16:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:suoning    来源:博客园

  一、简介
  MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。有以下特点:
  1.MySQL是一种数据库管理系统。
  2.MySQL是一种关联数据库管理系统。
  3.MySQL软件是一种开放源码软件。
  4.MySQL数据库服务器具有快速、可靠和易于使用的特点。
  5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。
  有大量可用的共享MySQL软件。
  MySQL表最大能达到多少?
  InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。
  二、安装MySQL
  下载MySQL地址:http://dev.mysql.com/downloads/mysql/
  CentOS 安装:
yum install mysql-server
  Ubuntu 安装:
  1. sudo apt-get install mysql-server
  2. sudo apt-get isntall mysql-client
  3. sudo apt-get install libmysqlclient-dev
  # 检测是否安装成功(是否为LISTEN状态)
  sudo netstat -tap | grep mysql
  编译安装MySQL-5.5.32:
  # 安装依赖包
  yum install ncurses-devel gcc gcc-c++ -y
  # 创建目录
  mkdir -p /home/oldsuo/tools
  # 安装cmake软件,gmake编译安装
  cd /home/oldsuo/tools/
  tar xf cmake-2.8.8.tar.gz
  cd cmake-2.8.8
  ./configure
  #CMake has bootstrapped.  Now run gmake.
  gmake
  gmake install
  cd ../
  # 开始安装mysql
  # 创建用户和组
  groupadd mysql
  useradd mysql -s /sbin/nologin -M -g mysql
  # 解压编译MySQL
  tar zxf mysql-5.5.32.tar.gz
  cd mysql-5.5.32
  cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
  -DMYSQL_DATADIR=/application/mysql-5.5.32/data \
  -DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
  -DENABLED_LOCAL_INFILE=ON \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
  -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_FAST_MUTEXES=1 \
  -DWITH_ZLIB=bundled \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_READLINE=1 \
  -DWITH_EMBEDDED_SERVER=1 \
  -DWITH_DEBUG=0
  #-- Build files have been written to: /home/oldsuo/tools/mysql-5.5.32
  提示: 编译时可配置的选项很多,具体可参考结尾附录或官方文档:
  make
  #[100%] Built target my_safe_process
  make install
  ln -s /application/mysql-5.5.32/ /application/mysql
  如果上述操作未出现错误,则MySQL5.5.32软件cmake方式的安装就算成功了。
  #拷贝配置文件
  cp mysql-5.5.32/support-files/my-small.cnf /etc/my.cnf
  #添加变量,并使之生效
  echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
  source /etc/profile
  echo $PATH
  #授权用户及/tmp/临时文件目录
  chown -R mysql.mysql /application/mysql/data/
  chmod -R 1777 /tmp/
  #初始化数据库
  cd /application/mysql/scripts/
  ./mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data/ --user=mysql
  cd ../
  #启动数据库
  cp support-files/mysql.server /etc/init.d/mysqld
  chmod +x /etc/init.d/mysqld
  /etc/init.d/mysqld  start
  #检查端口
  netstat -lntup|grep 3306

  编译安装完后一般安全操作:
  1、删除不必要的用户和库:
  #查看用户和主机列,从mysql.user里查看
  select user,host from mysql.user;
  #删除用户名为空的库,并检查
  delete from mysql.user where user='';
  select user,host from mysql.user;
  #删除主机名为localhost.localdomain的库,并检查
  delete from mysql.user where host='localhost.localdomain';
  select user,host from mysql.user;
  #删除主机名为::1的库,并检查。::1库的作用为IPV6
  delete from mysql.user where host='::1';
  #删除test库
  drop database test;

  2、添加额外管理员:
  # 添加额外管理员,system作为管理员,oldsuo为密码
  mysql> delete from mysql.user;
  Query OK, 2 rows affected (0.00 sec)
  mysql> grant all privileges on *.* to system@'localhost' identified by 'oldsuo' with grant option;
  Query OK, 0 rows affected (0.00 sec)
  # 刷新MySQL的系统权限相关表,使配置生效
  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
  mysql> select user,host from mysql.user;
  +--------+-----------+
  | user   | host      |
  +--------+-----------+
  | system | localhost |
  +--------+-----------+
  1 row in set (0.00 sec)
  mysql>
  3、设置登录密码并开机自启:
  #设置密码,并登陆
  /usr/local/mysql/bin/mysqladmin -u root password 'oldsuo'
  mysql -usystem -p
  #开机启动mysqld,并检查
  chkconfig mysqld on
  chkconfig --list mysqld
  #安装依赖包
  yum –y install ncurses ncurses-devel gcc gcc-c++
  #添加mysql用户及组
  groupadd mysql
  useradd -r -s /sbin/nologin -g mysql mysql
  #mysql5.1.62编译参数:
  ./configure \
  --prefix=/usr/local/mysql \
  --with-unix-soket-path=/usr/local/tmp/mysql.sock \
  --localstatedir=/usr/local/mysql/data \
  --enable-assembler \
  --enable-thread-safe-client \
  --with-mysqld-user=mysql \
  --with-big-tables \
  --without-debug \
  --with-pthread \
  --enable-assembler \
  --with-extra-charsets=complex \
  --with-readline \
  --with-ssl \
  --with-embedded-server \
  --enable-local-infile \
  --with-plugins=partition,innobase \
  --with-mysqld-ldflags=-all-static \
  --with-client-ldflags=-all-static
  make && make install
  #初始化mysql
  mkdir -p /usr/local/mysql/data    #建立mysql数据文件目录
  chown -R mysql.mysql /usr/local/mysql/        #授权mysql用户访问mysql安装目录
  /usr/local/mysql/bin/mysql_install_db --user=mysql        #初始化
  #拷贝mysql启动脚本
  cp support-files/my-small.cnf /etc/my.cnf
  #cp support-files/mysql.server /etc/init.d/mysqld
  chmod 700 /etc/init.d/mysqld
  #配置mysql使用全局路径
  echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile        #添加变量到profile
  source /etc/profile        #使变量生效
  echo $PATH            #检查
  #启动mysqld
  /etc/init.d/mysqld start
  #登陆报错,做软链接
  #ln -s /usr/local/mysql/bin/mysql /usr/bin/
  #启动报错日志:  Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't #exist
  #解决方法:  /usr/local/mysql/bin/mysql_install_db --user=mysql   #初始化数据库即可
  #登陆报错: mysql: unknown variable 'datadir=/usr/local/mysql/data'
  #解决方法: my.cnf 配置问题,vim /etc/my.cnf
  [client]
  #password        = your_password
  port                = 3306
  socket             = /tmp/mysql.sock
  #datadir             = /data1/mysql/var/          #这个不能加在上面,去掉
  [mysqld]
  port                = 3306
  socket             = /tmp/mysql.sock
  datadir            = /data1/mysql/var/          #加在这里就可以了
  #设置mysql用户root 的密码为oldsuo
  /usr/local/mysql/bin/mysqladmin -u root password 'oldsuo'

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号