Mysql安装和中文排序
来源:互联网 发布:网吧指纹软件申报 编辑:程序博客网 时间:2024/05/16 07:44
CentOS6.0以非root用户安装mysql
以非root、非yum的方式安装mysql一般来说会遇到各种各样的问题,网上很多帖子都说得不够清楚,这里将详细过程记录如下:
1. 先用root新建一个mysql账号
useradd -m mysql
2. 去官网下载mysql-5.1.58.tar.gz,放在/home/mysql/software下,解压:
tar xzvf mysql-5.1.58.tar.gz
然后进入mysql-5.1.58目录
执行./configure –prefix=/home/mysql/local/mysql5.1.58 –with-charset=utf8
其中–prefix指的是mysql要安装的目录,需要预先先建目录
接着执行make和make install。
在这个过程中如果缺少包或者编译器,请参照CentOS 6.0安装步骤文件的最后一步,用yum命令安装依赖包。
3. 进入/home/mysql/local/mysql5.1.58中,新建etc目录,然后
cp /home/mysql/local/mysql5.1.58/share/mysql/my-huge.cnf /home/mysql/local/mysql5.1.58/etc
最后将my-huge.cnf改名为my.cnf,关键在后面编辑这个文件:
vim my.cnf
然后将[mysqld]中
socket = /tmp/mysql.sock
改成
socket = /home/mysql/local/mysql5.1.58/tmp/mysql.sock
最后再加上以下几句:
log-error = /home/mysql/local/mysql5.1.58/var/mysql.err
pid-file = /home/mysql/local/mysql5.1.58/var/mysqld.pid
datadir = /home/mysql/local/mysql5.1.58/var/
这主要是因为mysql默认情况在在/var和/etc底下没有新建目录和文件的权限,这样改了后mysql将这些都建在自己的目录下。
ps:mysql寻找my.cnf的顺序为/etc/my.cnf /etc/mysql/my.cnf /home/mysql/local/mysql5.1.58/etc/my.cnf ~/.my.cnf,可以进入/home/mysql/local/mysql5.1.58/libexec下执行
./mysqld –verbose –help | grep -A 1 ‘Default options’可以看到。这里由于/etc和/etc/mysql下都没有my.cnf,所以会去/home/mysql/local/mysql5.1.58/etc/my.cnf底下找。
4. 进入/home/mysql/local/mysql5.1.58/bin目录下,执行
./mysql_install_db 安装数据库
然后再执行./mysqld_safe &即可以启动数据库
5.用root账号登陆数据库
./mysql -uroot
6. 让用户可以远程访问mysql
在默认情况下mysql是不允许远程访问的.
现在需要添加一个可以具有原创访问的mysql账号(需要进入mysql命令行下):
GRANT ALL PRIVILEGES ON *.* TO remote@”%” IDENTIFIED BY ‘远程登录的明文密码’ WITH GRANT OPTION;
执行如下语句生效:
flush privileges;
在centos默认情况下iptables是开启的,但并未开放3306端口,需要我们手动指定.
退出mysql,终端下输入:
vi /etc/sysconfig/iptables
添加如下字符串
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
重启iptables即可:
/etc/rc.d/init.d/iptables restart
现在可以开始连接远程的mysql数据库了
我们在做联系人功能的时候经常需要对字符串进行排序,但有时候我们使用以下语句排序的总不成功:
select * from test order by name asc;
结果如下:
正确的结果应该是:李四,王五,张三。
怎么在数据库做到这一点呢?我们建表的时候需要指定表的编码:
CREATE TABLE `test` (
`id` bigint(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
其中name字段采用的utf8所以排序出现异常了,应该采用gbk或者gbk2312(这个编码集不支持某些姓氏或者繁体字)。问题又来了,有人问如果我整个表都是utf8的,而某个字段是gbk的,将来要把表里的内容取出来还需要单独对某个字段转码岂不麻烦。
这里有个办法,就是采用以下sql:
select * from test order by convert(name using gbk) asc;
这样就会单独用gbk编码对name排序,而不影响字段本身编码。
PS:这几天我看到有人在找ENGINE=InnoDB AUTO_INCREMENT=4这种语句是什么意思,这里回答一下,这个建表语句是我直接用mysql导出工具导出来的,由于上表id设置的是AUTO_INCREMENT,同时数据库里面已经有3条记录了,所以下一个id自增值是4,于是产生的建表语句告诉mysql下一条语句应该从4开始自增。
- Mysql安装和中文排序
- MySQL 常规排序、自定义排序和按中文拼音字母排序
- MySQL 常规排序、自定义排序和按中文拼音字母排序
- mysql中文排序
- Mysql中文字段排序
- mysql中文排序
- mysql 中文排序
- mysql中文排序
- mysql中文字段排序
- mysql中文排序
- mysql中文排序
- mysql中文排序问题
- MySQL之中文排序
- mysql中文排序
- MySQL数据库中文排序
- MySQL按中文排序
- [转]mysql中文排序
- mysql中文字段排序
- Linux多线程同步的几种方式
- Android, property 添加写权限
- linux php安装pear
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- Pro WPF 读书笔记
- Mysql安装和中文排序
- yii外部action中如何渲染页面
- Android Format的使用
- activity 的属性android:taskAffinity和android:allowTaskReparenting
- 国务委员马凯-加快铁路建设推进政企分开改革-铁路建设-政企分开改革-马凯
- Objective-C中一种消息处理方法performSelector: withObject:
- H.264 基本流的结构
- Admin管理后台模板 Free HTML Admin Templates For The Backend Of Your Apps
- 通过取得MAC地址判断是否在VM中