记录一次自己的安装笔记
1.下载安装包 我用的是5.5.57
https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.57-linux-glibc2.12-x86_64.tar.gz
2 安装依赖
yum -y install perl perl-devel autoconf libaio
3.检查库文件是否存在,如有删除。
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# rpm -qa | grep mysql
mysql-libs-5.1.71-1.el6.x86_64
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# rpm -qa | grep mysql
[root@pdkcjt-int-zjxrpt-xrapp01 ~]#
4.检查mysql组和用户是否存在,如无创建
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# cat /etc/group | grep mysql
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# cat /etc/passwd | grep mysql
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# groupadd mysql
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# useradd -r -g mysql mysql
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# cat /etc/group | grep mysql
mysql:x:500:
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# cat /etc/passwd | grep mysql
mysql:x:498:500::/home/mysql:/bin/bash
[root@pdkcjt-int-zjxrpt-xrapp01 ~]#
其中 useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
5.解压TAR包,更改所属的组和用户
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# cd /usr
[root@pdkcjt-int-zjxrpt-xrapp01 usr]# cd local/
[root@pdkcjt-int-zjxrpt-xrapp01 local]# cd tarlib
[root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# ls
mysql-5.5.57-linux-glibc2.12-x86_64.tar.gz
[root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# tar -xf mysql-5.5.57-linux-glibc2.12-x8 6_64.tar.gz
[root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# mv mysql-5.5.57-linux-glibc2.12-x86_64 mysql [root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# ll
总用量 193828
drwxr-xr-x. 13 root root 4096 8月 30 19:13 mysql
-rw-r--r--. 1 root root 198473055 8月 30 17:48 mysql-5.5.57-linux-glibc2.12-x86_64.tar.gz
[root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# chown -R mysql:mysql mysql/
[root@pdkcjt-int-zjxrpt-xrapp01 tarlib]# cd mysql
[root@pdkcjt-int-zjxrpt-xrapp01 mysql]# cd mysql
6.安装和初始化数据库
[root@pdkcjt-int-zjxrpt-xrapp01 mysql]# sudo vim /etc/security/limits.conf
添加以下代码到 limits.conf
mysql hard nofile 65535
mysql soft nofile 65535
7.安装与初始化DB
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
不同版本 mysql_install_db位置不一样
有的会在bin目录下
启动
[root@pdkcjt-int-zjxrpt-xrapp01 mysql]# cd bin/
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# ./mysqld_safe --user=mysql &
将MySQL的控制脚本mysql.server拷贝到/etc/init.d/中。
[root@pdkcjt-int-zjxrpt-xrapp01 mysql]# cd bin/
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# ./mysqld_safe --user=mysql &
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# chmod +x /etc/init.d/mysqld
重启
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# service mysqld restart
Shutting down MySQL.170831 08:34:36 mysqld_safe mysqld from pid file /usr/local/mysql/data/pdkcjt-int-zjxrpt-xrapp01.pid ended
SUCCESS!
Starting MySQL.. SUCCESS!
[1]+ Done ./bin/mysqld_safe (wd: /usr/local/mysql)
(wd now: /usr/local/mysql/bin)
[root@pdkcjt-int-zjxrpt-xrapp01 bin]#
查看端口 3306
netstat -lntp | grep 3306
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# netstat -lntp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24895/mysqld
[root@pdkcjt-int-zjxrpt-xrapp01 bin]#
8.复制配置文件
cp support-files/my-medium.cnf /etc/my.cnf
注: 不同版本的support-files下面.cnf不一样
可以自己在etc/下面自己建立一个空的文件 把自己需要的配置写进去
9.设置开机启动
[root@pdkcjt-int-zjxrpt-xrapp01 bin]# chkconfig --level 35 mysqld on
[root@pdkcjt-int-zjxrpt-xrapp01 bin]#
10.测试mysql
[root@pdkcjt-int-zjxrpt-xrapp01 mysql]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.57 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
连接成功 路径太长 配置一下mysql的环境变量
11.环境变量
在/etc/profile最后加入两行命令:
[root@pdkcjt-int-zjxrpt-xrapp01 etc]# vim profile
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
"profile" 81L, 1859C
使用命令 使profile文件生效
[root@pdkcjt-int-zjxrpt-xrapp01 etc]# source /etc/profile
12修改密码
[root@pdkcjt-int-zjxrpt-xrapp01 etc]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.57 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
Database changed
mysql> update user set password=password('123456') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql>
13.添加远程访问权限
use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION ;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
注意 这里这句话有可能会新生成一条记录 装了好几次 都会莫名秒多出来一条 root记录为空的记录
删掉之后可以用户名和密码登录
注意这个生成的密码 可能也是空的 这样就导致你链接的时候用密码链接 打死也连接不上的效果
如果链接不上 尝试用一下修改密码!!!
还有一种是直接用sql语句更改权限 也很简单 但是忘记了操作步骤 这里就不重复了
update user set host = '%' where user = 'root';
如果主键冲突 可以删掉一样的数据
//重启生效 /etc/init.d/mysqld restart
flush privileges;
14. 修改字符集
在mysqld 下面添加以下内容
vim /etc/my.cnf
[mysqld]
character-set-server=utf8
# 不区分大小写
lower_case_table_names=1
15.卸载mysql 没有测试
# 1. 停止服务
/etc/init.d/mysqld stop
# 2. 停止并删除开机启动
chkconfig mysqld off
chkconfig --del mysqld
# 3. 删除MySQL目录
rm -rf /usr/local/mysql
rm -f /etc/my.cnf
rm -f /etc/init.d/mysqld
rm -f /root/.mysql_secret
# 4. 删除用户和用户组
userdel -r mysql
16.远程访问 mysql
1.开放3306端口
网上各种坑的 多数符号不对 建议直接复制22的 然后修改成3306
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]
[root@pdkcjt-int-zjxrpt-xrapp01 ~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
本地 cmd 端口 telnet ipd地址 3306
如果没有拒绝 就是开通端口成功
my.cnf 详细配置
http://www.cnblogs.com/captain_jack/archive/2010/10/12/1848496.html
总结 此文不是按照一个博文写出来的
是结合多个博文
ubantu安装比较简单 几行命令
不同版本的mysql 文件位置不一样 如果按照
问题记录:
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
我遇到的原因 是在 mysql数据库中的user表 里面多了两个用户名为'' 空的记录 每次用root登录时实际上用了匿名登录
删掉即可
1.关闭mysql
# service mysqld stop
2.屏蔽权限
# mysqld_safe --skip-grant-table
屏幕出现: Starting demo from .....
3.新开起一个终端输入
# mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
mysql> \q