Coloring columns in a table with colortbl and booktabs
There's no way to do this given the way booktabs
inserts space between above and below its rules. As Herbert notes inthe comments, it's not clear that rules and colours are really a logical combination. So probably the best you can do is to increase the row height and set the space above and below the rules to 0.
\documentclass{article}
\usepackage{xcolor}
\usepackage{booktabs,colortbl,tabularx}
\begin{document}
% Your original table
\begin{tabularx}{4cm}{>{\columncolor{gray}}cX>{\columncolor{gray}}c}
\toprule
1&2&3\\
\midrule
one&two&three\\
one&two&three\\
\cmidrule{2-3}
one&two&three\\
\midrule
un&deux&trois\\
\bottomrule
\end{tabularx}
% same table with booktab rules but no above space and making rows bigger
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\extrarowheight}{.75ex}
\begin{tabularx}{4cm}{>{\columncolor{gray}}cX>{\columncolor{gray}}c}
\toprule
1&2&3\\
\midrule
one&two&three\\
one&two&three\\
\cmidrule{2-3}
one&two&three\\
\midrule
un&deux&trois\\
\bottomrule
\end{tabularx}
% same table without booktab rules
\setlength{\extrarowheight}{.75ex}
\begin{tabularx}{4cm}{>{\columncolor{gray}}cX>{\columncolor{gray}}c}
\hline
1&2&3\\
\hline
one&two&three\\
one&two&three\\
\cline{2-3}
one&two&three\\
\hline
un&deux&trois\\
\hline
\end{tabularx}
\end{document}
The middle table still looks marginally better than the third one.