先准备mysql的源码包:mysql-5.6.10.tar.gz
源码包依赖的包比较多,所以要先下载几个包:包括:cmake-2.8.11.2.tar.gz, ncurses-5.9,autoconf-2.13.tar.gz,
或者使用注:请自行配置好yum源,不过centos默认的在线yum源也挺好用
# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex*libxml* ncurses* libmcrypt* libtool-ltdl-devel* make cmake--必要软件包安装
# useradd mysql
# tar -zxvf mysql-5.6.10.tar.gz
# cd mysql-5.6.10
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.6 --设置安装路径
# make && make install --编译安装
# chown -R mysql:mysql /usr/local/mysql5.6 --设置目录权限
# /usr/local/mysql5.6/scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysql5.6 --datadir=/usr/local/mysql5.6/data--安装db
--以下为设置开机自启及启动服务
# cp /usr/local/mysql5.6/support-files/mysql.server /etc/rc.d/init.d/mysql
# cp /usr/local/mysql5.6/support-files/my-default.cnf /etc/my.cnf
# chkconfig --add mysql && chkconfig mysql on
# service mysql start
附一些mysql的基本操作
一、连接mysql。
格式: mysql -h主机地址 -u用户名 -p用户密码
首先进入安装目录
# cd /usr/local/mysql5.6/bin
# ./mysql -uroot -p
输入密码,如果刚安装好mysql,超级用户root是没有密码的,提示符变为mysql>
查看数据库
mysql> show databases;
选择数据库
mysql> use mysql
查看数据库中表
mysql> show tables;
配置环境变量
export PATH=/usr/local/mysql5.6/bin:$PATH
连接到远程主机上的mysql。远程IP为:192.168.11.98用户名root,密码abcd123 则键入以下命令:
mysql -h192.168.11.98 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、 查询数据库状态
mysql> status;
4、 退出mysql命令:exit(回车)
二、用户管理
设置默认密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
# mysqladmin -uroot password '123123'
修改密码
第一种方法
将root的密码改为djg345
# mysqladmin -uroot -p123123 password djg345
以下方法需在mysql>提示符下操作
第二种方法 更改user01密码为user01pwd
mysql> SET PASSWORD FOR user01=PASSWORD('user01pwd');
mysql> flush privileges;
第三种方法 更改user01密码为user01pwd
mysql> REPLACE INTO mysql.user (Host,User,Password)VALUES(%,user01,PASSWORD(user01pwd));
mysql> flush privileges;
第四种方法 grant主要用于设置权限
mysql> GRANT USAGE ON *.* TO user01@'%' IDENTIFIED BY user01pwd;
创建用户 user01密码user01pwd
mysql> INSERT INTO mysql.user (Host,User,Password)VALUES(%,user01,PASSWORD(user01pwd));
mysql> FLUSH PRIVILEGES;
设置用户权限
给予nconf用户对nconf库所有权限
mysql> grant all privileges on nconf.* to nconf@'%' identifiedby 'nconf';
mysql> flush privileges;
需要注意的是我用之前版本mysql,配置数据库默认编码是在 [mysqld]下加 default-character-set=utf8
而 mysql 5.5.17用这个配置,似乎是错的,将导致 mysql 不能正常启动。将配置改为 character-set-server=utf8 即可。
报错解决办法:
1、
[ERROR] /usr/local/mysql/libexec/mysqld: Error while setting value '@MYSQL_TCP_PORT@' to 'port'
解决办法:看看/etc/my.cnf是否存在,里面是否使用的配置模板,而没有修改为实际的配置选项
2、报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
报错:1130-host ... is not allowed to connect to this MySql server
解决方法:
1。 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2. 授权法。
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES 使修改生效.就可以了
另外一种方法,不过我没有亲自试过的,在csdn.net上找的,可以看一下.
在安装mysql的机器上运行:
1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES //修改生效
4、mysql>EXIT //退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦!
还有一种在小红帽系统上 使用rpm软件安装,
一、卸载原来的mysql:
卸载一:
输入:
#rpm -qa | grep -i mysql
显示:
mysql-libs-5.1.52-1.el6_0.1.i686
卸载方法:
yum -y remove mysql-libs-5.1.52-1.el6_0.1.i686
卸载二:
输入:
#rpm -qa | grep -i mysql
显示:
MySQL-client-5.1.62-1.glibc23.i386
MySQL-server-5.1.62-1.glibc23.i386
卸载方法:
#rpm -ev MySQL-client-5.1.62-1.glibc23.i386 MySQL-server-5.1.62-1.glibc23.i386
二、安装MySQL服务器端:
安装文件:MySQL-server-5.1.62-1.glibc23.i386.rpm
# rpm -ivh /software/mysql/MySQL-server-5.1.62-1.glibc23.i386.rpm
这是在/usr/share/mysql 目录下生成一些 文件,其中有一个文件名为:my-medium.cnf 将其拷贝到/etc/my.cnf中
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
现在就安装完了,可以看看他运行的进程:
# ps -ef | grep mysql
三、安装MySQL客户端:
# rpm -ivh /software/mysql/MySQL-client-5.1.62-1.glibc23.i386.rpm
现在就安装客户端成功了,可以看看关于MySQL一些文件:
# ls /usr/bin/mysql*
四、登录mysql:
刚开始装上mysql时是没有密码的,输入:
# mysql
就可登录到mysql数据库上了。
如果登陆时候提示:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
(1)确定你的mysql.sock是不是在那个位置,
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock
(2)
如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql
最终启动MYSQL试试: /etc/init.d/mysql start
五、设置MySQL密码:
# mysqladmin -u root password 123456
这样就将mysql中用户名为root密码设为123456
如果没有成功,提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
按照以下步骤解决
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
最后我们说明下一些常见的设置。
修改MySQL默认数据库的编码
mysql> set character_set_client=utf8 ;
mysql> set character_set_connection=utf8 ;
mysql> set character_set_database=utf8 ;
mysql> set character_set_database=utf8 ;
mysql> set character_set_results=utf8 ;
mysql> set character_set_server=utf8 ;
mysql> set character_set_system=utf8 ;
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
修改mysql的表大小写
Windows上MySQL市不区分表名大小写的,所以很正常。但是在Linux上由于MySQL默认是却分大小写的,所以程序会出错。
最简单的方法当然是修改Linux上MySQL的配置文件,修改为忽略大小写就可以了。
修改办法是:
vi /etc/my.cnf
在[mysqld]下加入一行:
lower_case_table_names=1
这句话就表示不区分大小写表名。
重启一下MySQL服务再试试看看。
用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。
开放3306端口的解决步骤如下:
1、修改/etc/sysconfig/iptables文件,增加如下一行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
重启 iptables
service iptables restart
2、重启防火墙,这里有两种方式重启防火墙
使用Navicat远程访问
第一次访问时候有可能出现“登录出现1130 is not allowed to connect to this MySql server”问题,解决方法:
然后你想root用户名使用root密码从任何主机连接到mysql服务器的话。
运行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用root作为密码
运行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'root' WITH GRANT OPTION;
上面的命令创建一个可以从任意机器以root登录的超级账号,口令是root。这样,就可以使用方便的图形工具(navicat for mysql)进行登录和操作,包括修改root的口令。
使用YUM方式安装mysql(感觉很简单)
安装mysql
yum -y install mysql-server
修改配置文件,修改编码:
vim /etc/my.cnf
[mysqld]
character-set-server = utf8
再加一行:
[mysql]
default-character-set = utf8
chkconfig --list mysqld
设置开机启动:
chkconfig mysqld on
服务运行:
service mysqld start
service mysqld status
登陆mysql,设置密码
# mysqladmin -u root password 123456
或:
mysql -u root
mysql> use mysql
mysql> select user,host,password from mysql.user; ← 查看用户信
mysql> update user set password=password(‘123456') where user='root';
mysql> flush privileges;
mysql> quit